При соединении «информационной системы потребителя услуг ↔ Сервер безопасности» сервер безопасности является сервером, а информационная система - клиентом. Клиент и сервер должны доверять сертификатам друг друга, для этого им необходимо обменяться сертификатами.
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout subsystemName.key -out subsystemName.crt
После создания сертификата загрузить его в сервер безопасности. В меню CLIENTS ⇒ выберите подсистему и нажмите на раздел «Internal servers»
Импортируйте сертификаты указав путь к файлу subsystemName.crt и нажмите OK
После загрузки хэш сумма сертификата отобразится в списке. детали сертификата можно просмотреть кликнув на хэш, затем кликнуть DETAILS далее экспортируйте открытый ключ сервера безопасности. В секции SECURITY SERVER CERTIFICATE нажмите EXPORT. После нажатия загрузится архив certs.tar.gz содержащий внутренний сертификат сервера безопасности в формате cer и pem. На это настройка подсистемы завершена. Информационная система клиента должна отправлять запросы к серверу безопасности с использованием tls аутентификации с использование данных сертификатов (subsystemName.crt, subsystemName.key и certs.tar.gz).
Для проверки конфигурации можно воспользоваться утилитой cURL Вызвав один из метасервисов. для этого создайте файл с именем request.xml и поместите в него файл со следующим предварительно отредактировав его (необходимо указать свои идентифкаторы в разделе SUBSYSTEM).
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xro="http://x-road.eu/xsd/xroad.xsd" xmlns:iden="http://x-road.eu/xsd/identifiers"> <soapenv:Header> <xro:protocolVersion>4.0</xro:protocolVersion> <xro:id>GUID-HERE</xro:id> <xro:userId>SUbsystemCheck</xro:userId> <xro:service iden:objectType="SERVICE"> <iden:xRoadInstance>central-server</iden:xRoadInstance> <iden:memberClass>GOV</iden:memberClass> <iden:memberCode>70000005</iden:memberCode> <iden:subsystemCode>zags-service</iden:subsystemCode> <iden:serviceCode>listMethods</iden:serviceCode> <iden:serviceVersion>v1</iden:serviceVersion> </xro:service> <xro:client iden:objectType="SUBSYSTEM"> <iden:xRoadInstance>central-server</iden:xRoadInstance> <iden:memberClass>Укажите свой класс</iden:memberClass> <iden:memberCode>Укажите свой код</iden:memberCode> <iden:subsystemCode>Укажите наименование своей подсистемы</iden:subsystemCode> </xro:client> </soapenv:Header> <soapenv:Body> <xro:listMethods/> </soapenv:Body> </soapenv:Envelope>
Теперь перейдите в каталог где создан файл request.xml и выполните следующую комманду
curl -k -v --header 'Content-Type: text/xml;charset=UTF-8' --data @"./request.xml" https://Security-server --cert /path/to/subsystemName.crt --key /path/to/subsystemName.key
В отвеле вы должны получить XML файл содержащий список методов подсистемы учатсника указанного в запросе.
Для выполениея запросов чере SoapUI его необходимо предварительно настроить. Для soapUI сначала необходимо упаковать самоподписанный сертификат в pfx или p12 контейнер. в директории с ключевой парой выполните следующую комманду.
openssl pkcs12 -export -out keypair.pfx -inkey subsystemName.key -in subsystemName.crt
Задайте пароль для ключевой пары. Затем откройте SoapUI нажмите ctrl+alt+p В появившемся окне перейдите в раздер SSL Settings, в параметре KeyStore: укажите путь к файлу keypair.pfx, в KeyStore Password: укажите пароль который вы задали при создании контейнера, установите отметку requires client authentication напротив Client Authentication: На этом настройка завершена и можно перейти к выполнению запросов. Откройте файл listmethods.wsdl, затем выберите метод listMethods и сформируйте запрос как показано в примере для curl после чего выполните его, в случае успеха вы получите список методов друго участника, иначе вы получите сообщение об ощибке и её краткое описание.
Автор Даниил Горбенко