semenenko88
@semenenko88
Системный администратор

Как настроить 1С аутентификацию OpenID?

Имеем веб сервер Apache2.4 на Centos 7, работает по https. Сертификат самоподписанный. На нем опубликованы 2-е базы.
Сертификат создавал так:
spoiler
# Генерирую ключ
openssl genrsa -des3 -out ca.key 4096
# На основе ключа создаю сертификат для CA
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
# Генерирую ключ
openssl genrsa -out server.key 4096
# На основе предыдущего ключа создаю файл запроса (csr)
openssl req -new -key server.key -config openssl-csr.cnf -reqexts req_ext -out server.csr
# Создаю сертификат сервера (подписываю .csr своим ca.crt)
openssl x509 -req -days 365 -CA ca.crt -CAkey ca.key -set_serial 01 -extfile openssl-csr.cnf -extensions req_ext -in server.csr -out server.crt

Файл default.vrd для базы провайдера:
spoiler
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                base="/openidprov"
                ib="Srvr=srv1c;Ref=OpenIDProv;">
        <standardOdata enable="false"
                        reuseSessions="autouse"
                        sessionMaxAge="20"
                        poolSize="10"
                        poolTimeout="5"/>
<b><openid>
        <provider>
                <lifetime>86400</lifetime>
        </provider>
</openid></b>
</point>

Файл default.vrd для базы клиента OpenID:
spoiler
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                base="/test-openid-client"
                ib="Srvr=srv1c;Ref=test-openid-client;">
        <standardOdata enable="false"
                        reuseSessions="autouse"
                        sessionMaxAge="20"
                        poolSize="10"
                        poolTimeout="5"/>
        <openid>
                <rely url="https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op" />
        </openid>
</point>

В базе провайдерской, завел пользователей с паролями. (Пустая новая база 1С, не нашел что нужна какая-то специальная конфигурация, но вдруг.)

В базе клиентской, завел одноименных пользователей. Отключил аутентификацию 1С, включил OpenID.

При запуске клиентской базы тонким клиентом, меня перекидывает в базу OpenID. Если ввожу не верный пароль, сообщается об этом. Если ввожу верный пароль, получаю ошибку: "Ошибка подключения к OpenID провайдеру https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op".
В технологическом журнале при этом такая ошибка: "Ошибка работы с Интернет: Удаленный узел не прошел проверку".

Сервер 1С и Web сервер, это Linux (CentOS 7). На клиентских машинах Windows, сертификат ca.crt добавлен в хранилище доверенных корневых сертификатов. В браузере базы, и клиентская и провайдерская открываются быз ошибок по https.

Если перейти по адресу https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op скачивается файлик:
spoiler
<?xml version="1.0" encoding="UTF-8"?>
<xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0)">
<XRD>
<Service priority='0'>
<Type>http://specs.openid.net/auth/2.0/server</Type>
<URI>https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op</URI>
</Service>
</XRD>
</xrds:XRDS>


Также, если захожу веб браузером в базу клиентску, то меня не перекидывает на провайдерскую, в отличии от тонкого клиента.

Подозреваю что проблема в неправельно сгенерированном сертификате, или неправельной установке его на веб сервере (я про сертификат ca.crt), но на ИТС написано что клиентские сертификаты 1с ищет в хранилище сертификатов, а в CentOS нет единого хранилища.
Кстати, если открывать каким-нибудь консольным браузером с веб сервера его страничку:
https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op то, также открывается тот файлик, который скачивается на десктопных машинах, на сертификат не ругается.
  • Вопрос задан
  • 6111 просмотров
Решения вопроса 1
semenenko88
@semenenko88 Автор вопроса
Системный администратор
Решил вопрос, переездом на Ubuntu16.04. Проблема в том что не могу установить ca.crt (сертификат, которым подписываются сертификаты web-серверов) в хранилище Centos7, 1С никак не находит его. Зато на Ubuntu этот сертификат устанавливается так:
sudo install -m 0644 ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
sudo reboot

С этим ответом и вопросом, где описывается как я настраивал OpenID для 1С, можно решить задачу.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
jamakasi666
@jamakasi666 Куратор тега Linux
Просто IT'шник.
А клиенты доверяют вашему самоподписанному сертификату? Уверены что у всех клиентов был правильно импортирован корневой сертификат ? Без этого не взлетит.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы