Создание и настройка экземпляров компонентов КриптоПро DSS (*nix)
Внимание!
Перед выполнением данного этапа необходимо выполнить подготовительный этап, установить КриптоПро DSS и дополнительное ПО, настроить подключение к КриптоПро HSM или тестовому считывателю.
Создание экземпляров сервисов КриптоПро DSS и подключение к БД
1. Запустите CPShell или PowerShell:
sudo cpsh
# ИЛИ
sudo pwsh
2. Объявите переменные с данными подключения к СУБД:
Для указания параметров подключения к СУБД используется структура SqlConnectionInfo, а именно следующие поля в ней:
ServiceAccountName- имя сервисной учетной записи для подключения к СУБД. Под этой учетной записью к СУБД будет подключаться служба компонента (пул приложений). У данной УЗ будут минимально необходимые права для функционирования сервиса. Указанные в данном поле данные заносятся в строку подключения.ServiceAccountPassword- пароль сервисной учетной записи для подключения к СУБД. Указанные в данном поле данные заносятся в строку подключения.AsUser- имя учетной записи Администратора ПО для подключения к СУБД. Указанные в данном поле данные используются только в момент разворачивания экземпляра для подключения к СУБД, в строку подключения не заносятся (в настройках сервиса не сохраняются).AsUserPassword- пароль учетной записи Администратора ПО для подключения к СУБД. Указанные в данном поле данные используются только в момент разворачивания экземпляра, в строку подключения не заносятся (в настройках сервиса не сохраняются).
#Подключение к СУБД
$sql_address = "*.*.*.*:*" # IP-адрес сервера с PostgreSQL и TSP-порт, на котором по умолчанию прослушиваются соединения
$AsUser = "postgres" #Имя служебного пользователя СУБД
$AsUserPassword = "***" #Пароль для УЗ служебного пользователя СУБД
3. Объявите переменную с именем узла сервера СЭП:
$hostname = "hostname"
4. Объявите переменные с наименованиями создаваемых БД экземпляров:
#Наименования создаваемых БД
$idpdb = "IdentityServiceDB"
$ssdb = "SignatureServerDB"
$auditdb = "AnalyticServiceDB"
$dsdb = "DocumentStoreDB"
$osdb = "OperationsDB"
5. Объявите переменные с наименованиями создаваемых экземпляров:
$idp_name = "sts" #Имя экземпляра Центра Идентификации
$ss_name = "signserver" #Имя экземпляра Сервиса Подписи
$fe_name = "frontend" #Имя экземпляра веб-интерфейса
$audit_name = "analyticsservice" #Имя экземпляра Сервиса Аудита
$ds_name = "documentstore" #Имя экземпляра Сервиса обработки документов
6. Сформируйте строки подключения к БД экземпляров:
Примечание
В случае использования в качестве утилиты конфигурирования CPShell необходимо создавать строку подключения к БД явно для требуемого компонента.
#Строка подключения к БД Центра Идентификации
$idp_conn = New-DssIdsSqlConnectionInfo -ServerName $sql_address -DatabaseName $idpdb -DbType postgresql -ServiceAccountName $AsUser -ServiceAccountPassword $AsUserPassword -AsUser $AsUser -AsUserPassword $AsUserPassword -AccountType SqlAccount
#Строка подключения к БД Сервиса Подписи
$ss_conn = New-DssSignSqlConnectionInfo -ServerName $sql_address -DatabaseName $ssdb -DbType postgresql -ServiceAccountName $AsUser -ServiceAccountPassword $AsUserPassword -AsUser $AsUser -AsUserPassword $AsUserPassword -AccountType SqlAccount
#Строка подключения к БД Сервиса Аудита
$audit_conn = New-DssAuditSqlConnectionInfo -ServerName $sql_address -DatabaseName $auditdb -DbType postgresql -ServiceAccountName $AsUser -ServiceAccountPassword $AsUserPassword -AsUser $AsUser -AsUserPassword $AsUserPassword -AccountType SqlAccount
#Строка подключения к БД Сервиса Обработки Документов
$ds_conn = New-DssDsSqlConnectionInfo -ServerName $sql_address -DatabaseName $dsdb -DbType postgresql -ServiceAccountName $AsUser -ServiceAccountPassword $AsUserPassword -AsUser $AsUser -AsUserPassword $AsUserPassword -AccountType SqlAccount
#Строка подключения к БД Сервиса операций для Центра Идентификации
$ids_os_conn = New-DssIdsSqlConnectionInfo -ServerName $sql_address -DatabaseName $osdb -DbType postgresql -ServiceAccountName $AsUser -ServiceAccountPassword $AsUserPassword -AsUser $AsUser -AsUserPassword $AsUserPassword -AccountType SqlAccount
#Строка подключения к БД Сервиса обработки операций для Сервиса Подписи
$sign_os_conn = New-DssSignSqlConnectionInfo -ServerName $sql_address -DatabaseName $osdb -DbType postgresql -ServiceAccountName $AsUser -ServiceAccountPassword $AsUserPassword -AsUser $AsUser -AsUserPassword $AsUserPassword -AccountType SqlAccount
7. Создайте экземпляры сервисов:
#Создание экземпляра Центра Идентификации
Add-DssIdsInstance -DisplayName $idp_name -ApplicationName $idp_name -ServiceAccountName cprodss-srv -ConnectionInfo $idp_conn
#Создание экземпляра Сервиса Подписи
Add-DssSignInstance -DisplayName $ss_name -ApplicationName $ss_name -ServiceAccountName cprodss-srv -ConnectionInfo $ss_conn
#Создание экземпляра Веб-интерфейса
Add-DssFeInstance -DisplayName $fe_name -ApplicationName $fe_name -ServiceAccountName cprodss-srv
#Создание экземпляра Сервиса Аудита
Add-DssAuditInstance -DisplayName $audit_name -ApplicationName $audit_name -ServiceAccountName cprodss-srv -ConnectionInfo $audit_conn
#Создание экземпляра Сервиса Обработки Документов
Add-DssDsInstance -DisplayName $ds_name -ApplicationName $ds_name -ServiceAccountName cprodss-srv -ConnectionInfo $ds_conn
#Создание и подключение БД Сервиса Обработки Операций
#Для Центра Идентификации
Connect-DssIdsOperationStore -DisplayName $idp_name -ConnectionInfo $ids_os_conn
#Для Сервиса Подписи
Connect-DssSignOperationStore -DisplayName $ss_name -ConnectionInfo $sign_os_conn
Лицензирование КриптоПро DSS и дополнительного ПО
Для обеспечения работоспособности СЭП требуются следующие лицензии:
- лицензия на Сервис Подписи КриптоПро DSS и другие используемые компоненты и модули аутентификации,
- лицензия на СКЗИ "КриптоПро CSP" версии 5.0 с поддержкой TLS-сервера,
- лицензия на ПО "КриптоПро OCSP Client" (если планируется создание подписи форматов, требующих взаимодействия со Службами УЦ),
- лицензия на ПО "КриптоПро TSP Client" (если планируется создание подписи форматов, требующих взаимодействия со Службами УЦ).
См. также:
Ввод лицензии на компоненты КриптоПро DSS
Для ввода лицензии выполните (выполняется при помощи утилиты CPShell (sudo cpsh)):
# Модули аутентификации
# Создайте группу лицензий и добавьте в нее группу пользователей:
$gr_lic = Add-DssIdsLicenseGroup -DisplayName $idp_name -Name license -LicenseeGroups Default #Default в данном случае – имя группы пользователей по умолчанию
# Активируйте лицензию Сервиса Подписи:
Add-DssSignLicense -SerialNumber ‘Серийный номер лицензии’ -CompanyName 'Наименование конечного пользователя'
# Лицензия на модуль аутентификации Cloud CSP
Add-DssIdsLicense -DisplayName $idp_name -SerialNumber ‘Серийный номер лицензии’ -CompanyName 'Наименование конечного пользователя' -LicenseGroupId $gr_lic.id
Примечание
Если не указывать параметры SN и CompanyName, будет введена временная тестовая лицензия на три месяца.
Перезапустите экземпляры ЦИ и Сервиса Подписи:
Restart-DssIdsInstance -DisplayName $displayName
Restart-DssSignInstance -DisplayName $displayName
Ввод лицензии на другое ПО
Ввод лицензии на КриптоПро CSP
Для просмотра информации о текущей лицензии выполните:
sudo "/opt/cprocsp/sbin/amd64/cpconfig" -license -view
Для ввода лицензии выполните:
sudo ./cpconfig -license -set <серийный_номер>
3. Активируйте лицензию TLS-сервера для CSP:
sudo /opt/cprocsp/sbin/amd64/cpconfig -license -set ‘Серийный номер лицензии’
Примечание
Серийный номер следует вводить с соблюдением регистра символов.
Ввод лицензии на TSP- и OCSP-клиенты
Для ввода лицензии выполните:
sudo /opt/cprocsp/bin/amd64/ocsputil li -s <серийный_номер>
sudo /opt/cprocsp/bin/amd64/tsputil li -s <серийный_номер>
Активация и запуск сервисов
Внимание!
Перед выполнением данного этапа необходимо выполнить подготовительный этап, установить КриптоПро DSS и дополнительное ПО, настроить подключение к КриптоПро HSM или тестовому считывателю, развернуть необходимые компоненты КриптоПро DSS.
Активация сервисов требуется только для СЭП, развернутого в *nix-системах:
#Активация nginx
sudo systemctl enable --now cpnginx.service
#Активация сервисов КриптоПро DSS
sudo systemctl enable --now cprodss-idsrv-sts.service
sudo systemctl enable --now cprodss-signsrv-signserver.service
sudo systemctl enable --now cprodss-fesrv-frontend.service
sudo systemctl enable --now cprodss-auditsrv-analyticsservice.service
sudo systemctl enable --now cprodss-docsrv-documentstore.service
Конечные точки
В КриптоПро DSS доступна проверка состояния конечных точек сервисов. В случае если сервис работает
штатно, при обращении к его конечной точке при помощи POST/GET-запроса будет возвращен HTTP-ответ с
кодом StatusCode = "200" и JSON-Content: {"status": "Healthy"}.
Список конечных точек сервисов КриптоПро DSS:
#Центр Идентификации
https://$hostname/$idp_name/health
#Сервис Подписи
https://$hostname/$ss_name/health
#Сервис Аудита
https://$hostname/$audit_name/health
#Сервис обработки документов
https://$hostname/$ds_name/health
Аутентификация на Веб-интерфейсе
В КриптоПро DSS аутентификация и Операторов и пользователей на Веб-интерфейсе выполняется через единую конечную точку:
https://$hostname/$fe_name
После успешного прохождения аутентификации пользователю или Оператору будут предоставлены соответствующие возможности КриптоПро DSS.
Настройка экземпляров сервисов КриптоПро DSS
Центр Идентификации
1. Настройте сервисный сертификат Центра Идентификации (ЦИ) для обеспечения межсервисного взаимодействия компонентов. Сервисный сертификат может быть создан (или установлен из файла) при помощи соответствующего командлета:
$ids = New-DssIdsServiceCertificate -DisplayName $idp_name -SelfSigned -Install -Exportable -ProviderName "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" -ProviderType GR3410_2012_256 -ExpiresInDays 365 -Usage Service-Communications -PublicKeyOutput /opt/tmp/ids_self.cer -AddToLocalMachineRoot
#Где:
#SelfSigned – параметр, указывающий, что необходимо создать самоподписанный сервисный сертификат;
#Install – параметр, указывающий, что сервисный сертификат необходимо установить в хранилище mMy, с привязкой к ЗК;
#Exportable – флаг экспортируемости ключевого контейнера сервисного сертификата;
#ProviderName – имя провайдера для создания ключевого контейнера. На текущем примере выбран провайдер локального CSP, можно указать и провайдер HSM: "Crypto-Pro GOST R 34.10-2012 HSM CSP";
#ProviderType – тип алгоритма провайдера;
#ExpiresInDays – параметр, определяющий срок действия сервисного сертификата в днях;
#Usage = Service-Communications – параметр, указывающий, что необходимо создать сервисный сертификат для межсервисного взаимодействия;
#PublicKeyOutput – параметр, в котором указывается место сохранения сертификата открытого ключа;
#AddToLocalMachineRoot – параметр, указывающий на необходимость установки самоподписанного сертификата в хранилище доверенных корневых центров сертификации локального компьютера.
2. Создайте сертификат Центра Идентификации для подписания маркеров безопасности:
$ids_token = New-DssIdsServiceCertificate -DisplayName $idp_name -SelfSigned -Install -Exportable -ProviderName "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" -ProviderType GR3410_2012_256 -ExpiresInDays 365 -Usage Token-Signing -PublicKeyOutput /opt/tmp/ids_self_token.cer -AddToLocalMachineRoot
#Где:
#Usage = Token-Signing – параметр, указывающий, что необходимо создать сервисный сертификат для подписания маркеров.
3. Задайте созданные сертификаты в качестве используемых по умолчанию Центром Идентификации:
Add-DssIdsServiceCertificate -DisplayName $idp_name -Thumbprint $ids.Certificate.Thumbprint -Usage Service-Communications -Primary
Add-DssIdsServiceCertificate -DisplayName $idp_name -Thumbprint $ids_token.Certificate.Thumbprint -Usage Token-Signing -Primary
#Где:
#Primary – параметр, указывающий, что сертификат с выбранным отпечатком должен использоваться Центром Идентификации по умолчанию (быть первичным).
Примечание
Перед установкой сертификата ЦИ Администратор должен убедиться, что в сертификате указано корректное назначение ключа (digitalSignature).
См. также:
4. Укажите порт, на котором будут прослушиваться соединения для аутентификации операторов и пользователей, с использованием сертификата:
Set-DssIdsProperties -DisplayName $idp_name -SslAuthPort 4430
5. Зарегистрируйте Оператора:
Add-DssIdsIdentityOperator -DisplayName $idp_name -Login "Логин Оператора" -Name "Имя Оператора" -IssuerName realsts -Certificate "Путь до файла сертификата оператора (.cer)"
6. Добавьте сертификат издателя сертификата Оператора в список доверенных:
Add-DssIdsX509Entry -DisplayName $idp_name -Certificate "Путь к файлу сертификата издателя сертификата оператора" -StoreName 'Client Certificate Issuers'
Внимание!
Установка сертификата издателя будет выполнена в БД Центра Идентификации. Выделенное системное хранилище сертификатов издателей не требуется.
7. Установите алгоритм шифрования ключа DPAPI для защиты cookie равным ГОСТ Р 34.12 - 2015 (К) в режиме MGM (выполнять только в случае, если сервисный сертификат Центра Идентификации создан с применением российских криптографических алгоритмов):
Set-DssIdsDataProtectionProperties -DisplayName $idp_name -EncryptionAlgorithm GR3412_2015_K_MGM
8. Сгенерируйте долгосрочный ключ DPAPI:
Add-DssIdsDataProtectionKey -DisplayName $idp_name -ActivateInDays 0 -ExpiresInDays 365
#В параметре -ActivateInDays указывается срок в днях, по истечении которого ключ будет активирован. При значении "0" – ключ активируется немедленно.
#В параметре -ExpiresInDays указывается срок действия ключа.
9. Создайте группу лицензий и добавьте в нее группу пользователей:
$gr_lic = Add-DssIdsLicenseGroup -DisplayName $idp_name -Name license -LicenseeGroups Default #Default в данном случае – имя группы пользователей по умолчанию
10. Активируйте лицензии на модуль аутентификации Cloud CSP и добавьте их в ранее созданную группу лицензий:
#Лицензия на модуль аутентификации Cloud CSP
Add-DssIdsLicense -DisplayName $idp_name -SerialNumber ‘Серийный номер лицензии’ -CompanyName 'Наименование конечного пользователя' -LicenseGroupId $gr_lic.id
См. также:
Сервис Подписи
1. Создайте сертификат Сервиса Подписи для межсервисного взаимодействия:
$ss = New-DssSignServiceCertificate -DisplayName $ss_name -SelfSigned -Install -Exportable -ProviderName "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" -ProviderType GR3410_2012_256 -ExpiresInDays 365 -PublicKeyOutput /opt/tmp/ss_self.cer -AddToLocalMachineRoot
2. Задайте созданный сертификат в качестве используемого по умолчанию Сервисом Подписи:
Add-DssSignServiceCertificate -DisplayName $ss_name -Thumbprint $ss.Certificate.Thumbprint -Primary
3. Настройте отношения доверия с Центром Идентификации:
Add-DssSignClaimsProviderTrust -DisplayName $ss_name -IssuerName realsts -Certificate /opt/tmp/ids_self.cer
Add-DssSignClaimsProviderTrust -DisplayName $ss_name -IssuerName realsts2 -Certificate /opt/tmp/ids_self_token.cer
4. Активируйте лицензию Сервиса Подписи:
Add-DssSignLicense -DisplayName $ss_name -SerialNumber ‘Серийный номер лицензии’ -CompanyName 'Наименование конечного пользователя'
5. Добавьте криптопровайдеры, которые планируется использовать. Использование локального CSP допускается в тестовом режиме.
#Провайдер HSM 80-ого типа (с длиной ключа 256 бит) с экспортируемым мастер-ключом (МК)
Add-DssSignCryptoProvider -DisplayName $ss_name -ProviderName "Crypto-Pro GOST R 34.10-2012 HSM CSP" -ProviderType 80 -TypeId GostWithMasterKey -Exportable
#Провайдер HSM 81-ого типа (с длиной ключа 512 бит) с экспортируемым мастер-ключом
Add-DssSignCryptoProvider -DisplayName $ss_name -ProviderName "Crypto-Pro GOST R 34.10-2012 Strong HSM CSP" -ProviderType 81 -TypeId GostWithMasterKey -Exportable
#RSA-провайдер HSM 24-ого типа с экспортируемым МК
Add-DssSignCryptoProvider -DisplayName $ss_name -ProviderName "Crypto-Pro Enhanced RSA and AES HSM CSP" -ProviderType 24 -TypeId RSAWithMasterKey -Exportable
#Провайдер локального CSP 80-ого типа с экспортируемым МК
Add-DssSignCryptoProvider -DisplayName $ss_name -ProviderName "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" -ProviderType 80 -TypeId GostWithMasterKey -Exportable
#Провайдер локального CSP 80-ого типа с экспортируемым МК
Add-DssSignCryptoProvider -DisplayName $ss_name -ProviderName "Crypto-Pro GOST R 34.10-2012 Strong Cryptographic Service Provider" -ProviderType 81 -TypeId GostWithMasterKey -Exportable
#RSA-провайдер локального CSP 24-ого типа с экспортируемым МК
Add-DssSignCryptoProvider -DisplayName $ss_name -ProviderName "Crypto-Pro Enhanced RSA and AES CSP" -ProviderType 24 -TypeId RSAWithMasterKey -Exportable
6. Добавьте офлайн-обработчик запросов на сертификат:
Add-DssSignEnrollment -DisplayName $ss_name -Type EnrollOutOfBand -EnrollDisplayName "Сторонний УЦ" -ValidationMode ChainOnline -RdnConfig "Путь к файлу rdn.config" -TemplatesConfig "Путь к файлу templates.config"
7. Добавьте обработчик для Windows-исполнения УЦ 2.0 (только для работы в тестовом режиме):
#Установите сертификат Оператора ЦР
/opt/cprocsp/bin/amd64/certmgr -inst -file <путь>/oper.pfx -pfx -pin <pin_for_pfx> -store mmy
#Выдайте права на чтение УЗ cprodss-srv на ключевой контейнер с сертификатом Оператора ЦР
#Объявите параметры обработчика:
$endn = 'Тестовый подчиненный УЦ ООО "КРИПТО-ПРО" ГОСТ 2012 (УЦ 2.0)' #Отображаемое имя
$enuri = "https://testca2012.cryptopro.ru/RA/RegAuthLegacyService.svc" #Адрес Сервиса ЦР
$enfolder = "3bdbf973-b216-4335-b443-ac5900a92715" #ID папки ЦР
$enauth = 'Тестовый подчиненный УЦ ООО "КРИПТО-ПРО" ГОСТ 2012 (УЦ 2.0)' #AuthorityName ЦС
$oper_ra = 'отпечаток сертификата оператора ЦР'
#Добавляем обработчик:
Add-DssSignEnrollment -DisplayName $ss_name -Type CryptoProCA20 -EnrollDisplayName $endn -CAServiceUrl $enuri -ValidationMode ChainOnline -FolderId $enfolder -AuthorityName $enauth – OperatorCertificateThumbprint $oper_ra
Примечание
Ключ и сертификат администратора ЦР после добавления обработчика будут добавлены в БД Сервиса Подписи
8. Добавление обработчика для *-nix-исполнений КриптоПро УЦ 2.0
Установите сертификаты Операторов ЦР для подписания запросов и 2-X TLS.
/opt/cprocsp/bin/amd64/certmgr -inst -file /path/to/oper.pfx -pfx -pin <pin_for_pfx> -store mmy
#Выдайте права на чтение УЗ cprodss-srv на ключевые контейнеры с сертификатами Операторов ЦР
#Объявите параметры обработчика:
$endn = 'УЦ REST' #Отображаемое имя обработчика
$ra_foldername = 'RA' #Наименование целевой папки на ЦР
$ra_url = 'https://ra_hostname' #Адрес ЦР
$oper_sign = 'отпечаток сертификата оператора ЦР для подписания запросов'
$oper_tls = 'отпечаток сертификата оператора ЦР для 2-TLS'
#Добавьте обработчик:
Add-DssSignEnrollment -DisplayName $ss_name -Type CryptoProCA20Rest -EnrollDisplayName $endn -OperatorCertificateThumbprint $oper_sign -OperatorTlsCertThumbprint $oper_tls -UserSearchOid 2.5.4.3 -CAServiceUrl $ra_url -FolderName $ra_foldername -SubjectRenamePolicy AdminUser -ValidationMode ChainOnline
#Где:
#UserSearchOid – OID компонента имени для поиска пользователя в ЦР
#SubjectRenamePolicy – политика переименования пользователя на ЦР в случае, если компоненты имени из запроса на сертификат отличаются от компонент имени пользователя ЦР. Возможные значения:
#- Forbidden – модулю УЦ запрещено выполнять переименование пользователя на ЦР.
#- AdminOnly – модуль УЦ будет пытаться переименовать пользователя ЦР только в том случае, если запрос на сертификат создавался от имени Оператора DSSа (не путать с оператором УЦ).
#- AdminUser - модуль УЦ будет пытаться переименовать пользователя ЦР всегда.
9. Зарегистрируйте службу TSP:
Add-DssSignTspService -DisplayName $ss_name -Name <имя службы TSP> -Title <отображаемое имя службы TSP> -Url <адрес службы TSP>
# Добавление тестовой службы TSP:
Add-DssSignTspService -DisplayName $ss_name -Name testca2012 -Title testca2012 -Url http://testca2012.cryptopro.ru/tsp/tsp.srf
10. Добавьте проверяющую сторону Сервиса Подписи:
Add-DssIdsRelyingPartyTrust -DisplayName $idp_name -name signserver -Description "Сервис Подписи" -Identities "urn:cryptopro:dss:signserver:$ss_name","https://$hostname/$ss_name/rest/api","https://$hostname/$ss_name"
11. Зарегистрируйте плагины XML-преобразований:
#Плагин XML-преобразования XPath Filter 2.0
Add-DssSignTransformPlugin -DisplayName $ss_name -Assembly CryptoPro.Plugins.Xml.Transforms.dll -Classname CryptoPro.Plugins.Xml.Transforms.Filter2SubstractTransform -Identifiers "http://www.w3.org/2002/06/xmldsig-filter2"
#Плагин XML-преобразования Фонда Социального Страхования (ФСС)
Add-DssSignTransformPlugin -DisplayName $ss_name -Assembly CryptoPro.Plugins.Xml.Transforms.dll -Classname CryptoPro.Plugins.Xml.Transforms.XmlFssTransform -Identifiers "urn:xml-dsig:transformation:v1.1"
Дополнительные настройки
Изменение алгоритма шифрования по умолчанию:
Set-DssSignProperties -DefaultEncryptionAlg [G28147 | GR3412_K | GR3412_K_OMAC | GR3412_M | GR3412_M_OMAC]
Доступные значения:
- 1.2.643.7.1.1.5.1.1 - "Магма",
- 1.2.643.7.1.1.5.2.1 - "Кузнечик",
- 1.2.643.2.2.21 - ГОСТ Р 28147-89.
Значения OMAC:
- 1.2.643.7.1.1.5.1.2 - "Магма",
- 1.2.643.7.1.1.5.2.2 - "Кузнечик".
По умолчанию используется 1.2.643.7.1.1.5.2.1 - "Кузнечик".
Веб-интерфейс
1. Создайте сертификат Веб-интерфейса для межсервисного взаимодействия:
$fe = New-DssFeServiceCertificate -DisplayName $fe_name -SelfSigned -Install -Exportable -ProviderName "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" -ProviderType GR3410_2012_256 -ExpiresInDays 365 -PublicKeyOutput /opt/tmp/fe_self.cer -AddToLocalMachineRoot
2. Задайте созданный сертификат в качестве используемого по умолчанию Веб-интерфейсом:
Add-DssFeServiceCertificate -DisplayName $fe_name -Thumbprint $fe.Certificate.Thumbprint -Primary
3. Настройте отношения доверия с Центром Идентификации:
Add-DssFeClaimsProviderTrust -DisplayName $fe_name -IssuerName realsts -Certificate /opt/tmp/ids_self.cer
Add-DssFeClaimsProviderTrust -DisplayName $fe_name -IssuerName realsts2 -Certificate /opt/tmp/ids_self_token.cer
4. Укажите адреса Центра Идентификации и Сервиса Подписи:
Set-DssFEProperties -DisplayName $fe_name -SignServerAddress http://$hostname/$ss_name -StsAddress http://$hostname/$idp_name
5. Установите алгоритм шифрования ключа DPAPI (Data Protection API) для шифрования cookie равным ГОСТ Р 34.12 - 2015 (К) в режиме MGM (выполнять только в том случае, если сервисный сертификат Веб-интерфейса создан с применением российских криптографических алгоритмов):
Set-DssFeDataProtectionPropterties -DisplayName $fe_name -EncryptionAlgorithm GR3412_2015_K_MGM
6. Сгенерируйте долгосрочный ключ для шифрования cookie:
Add-DssFeDataProtectionKey -DisplayName $fe_name -ActivateInDays 0 -ExpiresInDays 365
7. Выполните настройку для обеспечения связки "Центр Идентификации" – "Веб-интерфейс":
#Создание oauth-клиента на Центре Идентификации
Add-DssIdsClient -DisplayName $idp_name -Identifier "cryptopro.dss.frontend.$fe_name" -Name frontend -AllowedFlow AuthorizationCode,ClientCredentials,TokenExchange,RefreshToken -RedirectUri "https://$hostname/$fe_name/signin-oidc" -RefreshTokenUsage ReUse -GenerateSecret -SecretLifetime 0 -ElevateLoa
#Получение значение секрета для созданного oauth-клиента
$clientfe_secret = (Get-DssIdsClientSecret -DisplayName $idp_name -ClientId "cryptopro.dss.frontend.$fe_name").value
#Настройка доступа на Веб-интерфейсе:
Set-DssFeOidcSettings -DisplayName $fe_name -ClientId "cryptopro.dss.frontend.$fe_name" -ClientSecret $clientfe_secret -Realm "https://$hostname/$fe_name/" -Issuer "https://$hostname/$idp_name/" -AuthorizationEndpoint "https://$hostname/$idp_name/oauth/authorize" -TokenEndpoint "http://$hostname/$idp_name/oauth/token" -EndSessionEndpoint "https://$hostname/$idp_name/oauth/endsession"
Примечание
При регистрации OAuth-клиента Веб-интерфейса необходимо обязательно указывать параметр -ElevateLoa,
позволяющий повысить уровень доверия.
8. Добавьте проверяющую сторону Веб-Интерфейса:
Add-DssIdsRelyingPartyTrust -DisplayName $idp_name -name frontend -Description "Веб-интерфейс" -Identities "urn:cryptopro:dss:frontend:$fe_name"
9. Настройте интеграцию Веб-Интерфейса и Службы проверки сертификатов и электронной подписи КриптоПро SVS (при его использовании):
Set-DssFeProperties -DisplayName $fe_name -VerificationServiceAddress https://svs_hostname/svs_appname
Сервис Аудита
1. Создайте сертификат Сервиса Аудита для межсервисного взаимодействия:
$audit = New-DssAuditServiceCertificate -DisplayName $audit_name -SelfSigned -Install -Exportable -ProviderName "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" -ProviderType GR3410_2012_256 -ExpiresInDays 365 -PublicKeyOutput /opt/tmp/audit_self.cer -AddToLocalMachineRoot
2. Задайте созданный сертификат в качестве используемого по умолчанию Сервисом Аудита:
Add-DssAuditServiceCertificate -DisplayName $audit_name -Thumbprint $audit.Certificate.Thumbprint -Primary
3. Настройте отношения доверия с Центром Идентификации:
Add-DssAuditClaimsProviderTrust -DisplayName $audit_name -IssuerName realsts -Certificate /opt/tmp/ids_self.cer
Add-DssAuditClaimsProviderTrust -DisplayName $audit_name -IssuerName realsts2 -Certificate /opt/tmp/ids_self_token.cer
4. Добавьте проверяющую сторону Сервиса Аудита:
Add-DssIdsRelyingPartyTrust -DisplayName $idp_name -name analyticsservice -Identities "urn:cryptopro:dss:analytics:$audit_name" -Description "Сервис Аудита"
5. Настройте интеграцию прочих Сервисов с Сервисом Аудита:
#Центр Идентификации
Set-DssIdsProperties -DisplayName $idp_name -AnalyticsServiceAddress http://$hostname/$audit_name
#Веб-Интерфейс
Set-DssFeProperties -DisplayName $fe_name -AnalyticsServiceAddress http://$hostname/$audit_name
6. Добавьте модули формирования событий Аудита:
#Центр Идентификации
New-DssIdsAudit -DisplayName $idp_name -AuditServiceAddress http://$hostname/$audit_name/api/writer
#Сервис Подписи
New-DssSignAudit -DisplayName $ss_name -AuditServiceAddress http://$hostname/$audit_name/api/writer
#Сервис Обработки Документов
New-DssDsAudit -DisplayName $ds_name -AuditServiceAddress http://$hostname/$audit_name/api/writer
См. также:
Сервис Обработки Документов
1. Создайте сертификат Сервиса обработки документов для межсервисного взаимодействия:
$ds = New-DssDsServiceCertificate -DisplayName $ds_name -SelfSigned -Install -Exportable -ProviderName "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" -ProviderType GR3410_2012_256 -ExpiresInDays 365 -PublicKeyOutput /opt/tmp/ds_self.cer -AddToLocalMachineRoot
2. Задайте созданный сертификат в качестве используемого по умолчанию Сервисом обработки документов:
Add-DssDsServiceCertificate -DisplayName $ds_name -Thumbprint $ds.Certificate.Thumbprint -Primary
3. Настройте отношения доверия с Центром Идентификации и Сервисом Подписи:
Add-DssDsClaimsProviderTrust -DisplayName $ds_name -IssuerName realsts -Certificate /opt/tmp/ids_self.cer
Add-DssDsClaimsProviderTrust -DisplayName $ds_name -IssuerName realsts2 -Certificate /opt/tmp/ids_self_token.cer
Add-DssDsClaimsProviderTrust -DisplayName $ds_name -IssuerName signserver -Certificate /opt/tmp/ss_self.cer
4. Добавьте проверяющую сторону Сервиса Обработки Документов:
Add-DssIdsRelyingPartyTrust -DisplayName $idp_name -name documentstore -Description "Сервис обработки документов" -Identities "urn:cryptopro:dss:documentstore:$ds_name"
5. Настройте интеграцию прочих сервисов с Сервисом Обработки Документов:
#Центр Идентификации
Set-DssIdSProperties -DisplayName $idp_name -DocumentStoreAddress http://$hostname/$ds_name
#Сервис Подписи
Set-DssSignProperties -DisplayName $ss_name -DocumentStoreAddress http://$hostname/$ds_name
#Веб-интерфейс
Set-DssFeProperties -DisplayName $fe_name -DocumentStoreAddress http://$hostname/$ds_name
См. также:
Удаление экземпляров сервисов
При удалении экземпляров сервисов необходимо выполнить следующие действия.
1. Остановка сервисов.
sudo systemctl stop cprodss-*.service
2. Отключение Сервиса Операций от Сервиса Подписи и Центра Идентификации.
#Отключение Сервиса Обработки Операций от экземпляра Сервиса "Центр Идентификации"
Disconnect-DssIdsOperationStore -DisplayName $idp_name
#Отключение Сервиса Обработки Операций от экземпляра Сервиса Подписи (с опциональным флагом DeleteDB для удаления БД Сервиса Обработки Операций)
Disconnect-DssSignOperationStore -DisplayName $ss_name -DeleteDB
3. Удаление экземпляров сервисов и БД.
#Удаление экземпляра Центра Идентификации (с опциональным флагом DeleteDB для удаления БД)
Remove-DssIdsInstance -DisplayName $idp_name -DeleteDB
#Удаление экземпляра Сервиса Подписи (с опциональным флагом DeleteDB для удаления БД)
Remove-DssSignInstance -DisplayName $ss_name -DeleteDB
#Удаление экземпляра Веб-интерфейса
Remove-DssFeInstance -DisplayName $fe_name
#Удаление экземпляра Сервиса Аудита (с опциональным флагом DeleteDB для удаления БД)
Remove-DssAuditInstance -DisplayName $audit_name -DeleteDB
#Удаление экземпляра Сервиса Обработки Документов (с опциональным флагом DeleteDB для удаления БД)
Remove-DssDsInstance -DisplayName $ds_name -DeleteDB
Примечание
В случае необходимости полного удаления КриптоПро DSS необходимо также удалить соответствующие пакеты.