Задача установить защищенный туннель с ГИС ЖКХ под Astra Linux.
Решение:
Сначала скопируем с токена сертификат в формате pfx. Для этого можно воспользоваться утилитой P12FromGostCSP (Windows). Под Linux тоже как-то можно, но как- нужно гуглить. Мне предоставили уже готовый файл.
Далее нужно установить крипто-про CSP с пакетом stunnel. Зайдя в крипто про, во вкладке «сертификаты» необходимо установить корневые сертификаты с https://my.dom.gosuslugi.ru/ и установить сертификат из файла psk.
Для настройки конфигурационного файла stunnel, нужно из файла формата pfx получить файлы key и crt
crt и pem:
|
openssl pkcs12 -in file.pfx -clcerts -nokeys -out public.crt openssl x509 -in public.crt -out public.pem -outform PEM |
key:
|
openssl pkcs12 -in SSK_obezl_3.pfx -nocerts -out private.key |
Лично у меня на этом месте выскочила ошибка:
|
Enter Import Password: Error outputting keys and certificates 124867336299712:error:06074079:digital envelope routines:EVP_PBE_CipherInit:unknown pbe algorithm:../crypto/evp/evp_pbe.c:95:TYPE=1.2.840.113549.1.12.1.80 124867336299712:error:23077073:PKCS12 routines:PKCS12_pbe_crypt:pkcs12 algor cipherinit error:../crypto/pkcs12/p12_decr.c:41: 124867336299712:error:2306A075:PKCS12 routines:PKCS12_item_decrypt_d2i:pkcs12 pbe crypt error:../crypto/pkcs12/p12_decr.c:94: |
Которую я так и не победил, но тем не менее файл сформировался.
Далее необходимо настроить конфигурационный файл туннеля. У меня он получился вида:
|
pid=/home/vasya/stunnel/stunnel_cli.pid output=/home/vasya/stunnel/t.log socket = l:TCP_NODELAY=1 socket = r:TCP_NODELAY=1 debug = 7 [https] client = yes accept=localhost:8080 connect = api.dom.gosuslugi.ru:443 cert=/home/vasya/stunnel/public.pem CAFile=/home/vasya/stunnel/CA-PPAK_2023.pem key=/home/vasya/stunnel/private.key verify=0 |
Файл CA-PPAK_2023.pem взял из архива «ГИС ЖКХ_Интеграция v.14.8.0.2.zip» с документацией скачанного с сайта https://my.dom.gosuslugi.ru/
И пробуем запустить туннель:
|
opt/cprocsp/sbin/amd64/stunnel_thread /home/vasya/stunnel/stunnel_run.conf |
Логи будут писаться в файл t.log. Если всё хорошо, и в логах ошибок нет, то можно попробовать выполнить в браузере запрос вида:
|
http://127.0.0.1:8080/ext-bus-debt-service/services/DebtAsync |
От ГИС ЖКХ придет что-то вроде:
|
<env:Envelope xmlns:ns6="http://dom.gosuslugi.ru/schema/integration/individual-registry-base/" xmlns:ns5="http://dom.gosuslugi.ru/schema/integration/account-base/" xmlns:ns8="http://dom.gosuslugi.ru/schema/integration/metering-device-base/" xmlns:ns7="http://dom.gosuslugi.ru/schema/integration/nsi-base/" xmlns:ns13="http://dom.gosuslugi.ru/schema/integration/debts/" xmlns:ns9="http://dom.gosuslugi.ru/schema/integration/organizations-registry-base/" xmlns:ns12="http://dom.gosuslugi.ru/schema/integration/bills-base/" xmlns:ns11="http://dom.gosuslugi.ru/schema/integration/payments-base/" xmlns:ns10="http://dom.gosuslugi.ru/schema/integration/organizations-base/" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns4="http://dom.gosuslugi.ru/schema/integration/base/" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#"> <env:Body> <env:Fault> <faultcode>env:Server</faultcode> <faultstring>AUT011000: Нет активной ИС с данным сертификатом</faultstring> <detail> <ns4:Fault> <ns4:ErrorCode>AUT011000</ns4:ErrorCode> <ns4:ErrorMessage>Нет активной ИС с данным сертификатом</ns4:ErrorMessage> </ns4:Fault> </detail> </env:Fault> </env:Body> </env:Envelope> |
Тут всё просто — открываем заявку на сайте ГИС ЖКХ и добавляем сертификат.
P,S. Отладку запросов далее можно делать в утилите soapui, Как? Тема отдельной будущей статьи, когда буду разбираться с запросами