Создание и настройка экземпляров компонентов КриптоПро Ключ
Внимание!
Перед выполнением данного этапа необходимо выполнить подготовительный этап, установить КриптоПро Ключ и дополнительное ПО, настроить подключение к КриптоПро HSM или тестовому считывателю.
Создание экземпляров сервисов КриптоПро Ключ и подключение к БД
1. Запустите CPShell или PowerShell:
sudo cpsh
# ИЛИ
sudo pwsh
2. Объявите переменные с данными подключения к СУБД:
#Подключение к СУБД
$sql_address = "*.*.*.*:*" # IP-адрес сервера с PostgreSQL и TSP-порт, на котором по умолчанию прослушиваются соединения
$AsUser = "postgres" #Имя служебного пользователя СУБД
$AsUserPassword = "***" #Пароль для УЗ служебного пользователя СУБД
3. Объявите переменную с hostname сервера "КриптоПро Ключ":
$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" #Имя экземпляра Сервиса обработки документов
$mdag_name = "cprokey" #Имя экземпляра mDAG для МП КриптоПро Ключ
$mdag_name_2 = "cryptokey" #Имя экземпляра mDAG для МП КриптоКлюч
$mdag_name_3 = "cprokey" #Имя экземпляра mDAG для МП КриптоПро Ключ
$lite_name = "lite" #Имя экземпляра Сервиса Lite
$pp_module = "cprokey" #Имя модуля сервиса PushProxy для МП КриптоПро Ключ
$pp_module_cryptokey = "cryptokey" #Имя модуля сервиса PushProxy для МП КриптоКлюч
$pp_module_cprokey = "cprokey" #Имя модуля сервиса PushProxy для МП КриптоПро Ключ
6. Сформируйте строки подключения к БД экземпляров:
#Строка подключения к БД Центра Идентификации
$idp_conn = New-IdsSqlConnectionInfo -ServerName $sql_address -DatabaseName $idpdb -DbType postgresql -ServiceAccountName $AsUser -ServiceAccountPassword $AsUserPassword -AsUser $AsUser -AsUserPassword $AsUserPassword
#Строка подключения к БД Сервиса Подписи
$ss_conn = New-SignSqlConnectionInfo -ServerName $sql_address -DatabaseName $ssdb -DbType postgresql -ServiceAccountName $AsUser -ServiceAccountPassword $AsUserPassword -AsUser $AsUser -AsUserPassword $AsUserPassword
#Строка подключения к БД Сервиса Аудита
$audit_conn = New-AuditSqlConnectionInfo -ServerName $sql_address -DatabaseName $auditdb -DbType postgresql -ServiceAccountName $AsUser -ServiceAccountPassword $AsUserPassword -AsUser $AsUser -AsUserPassword $AsUserPassword
#Строка подключения к БД Сервиса обработки документов
$ds_conn = New-DsSqlConnectionInfo -ServerName $sql_address -DatabaseName $dsdb -DbType postgresql -ServiceAccountName $AsUser -ServiceAccountPassword $AsUserPassword -AsUser $AsUser -AsUserPassword $AsUserPassword
#Строка подключения к БД Сервиса обработки операций
$os_conn = New-IdsSqlConnectionInfo -ServerName $sql_address -DatabaseName $osdb -DbType postgresql -ServiceAccountName $AsUser -ServiceAccountPassword $AsUserPassword -AsUser $AsUser -AsUserPassword $AsUserPassword
7. Создайте экземпляры Сервисов:
#Создание экземпляра Центра Идентификации
Add-IdsInstance -DisplayName $idp_name -ApplicationName $idp_name -ServiceAccountName cprokey-srv -ConnectionInfo $idp_conn
#Создание экземпляра Сервиса Подписи
Add-SignInstance -DisplayName $ss_name -ApplicationName $ss_name -ServiceAccountName cprokey-srv -ConnectionInfo $ss_conn
#Создание экземпляра Веб-интерфейса
Add-FeInstance -DisplayName $fe_name -ApplicationName $fe_name -ServiceAccountName cprokey-srv
#Создание экземпляра Сервиса Аудита
Add-AuditInstance -DisplayName $audit_name -ApplicationName $audit_name -ServiceAccountName cprokey-srv -ConnectionInfo $audit_conn
#Создание экземпляра Сервиса Обработки Документов
Add-DsInstance -DisplayName $ds_name -ApplicationName $ds_name -ServiceAccountName cprokey-srv -ConnectionInfo $ds_conn
#Создание экземпляра mDAG для МП КриптоПро Ключ
#Add-MdagInstance -DisplayName $mdag_name3 -ApplicationName $mdag_name -ServiceAccountName cprokey-srv
#Создание экземпляра mDAG для МП КриптоПро Ключ
#Add-MdagInstance -DisplayName $mdag_name -ApplicationName $mdag_name -ServiceAccountName cprokey-srv
#Создание экземпляра mDAG для МП КриптоКлюч
#Add-MdagInstance -DisplayName $mdag_name_2 -ApplicationName $mdag_name_2 -ServiceAccountName cprokey-srv
#Создание и подключение БД Сервиса Обработки Операций
#Для Центра Идентификации
Connect-IdsOperationStore -DisplayName $idp_name -ConnectionInfo $os_conn
#Для Сервиса Подписи
Connect-SignOperationStore -DisplayName $ss_name -ConnectionInfo $os_conn
#Создание экземпляра Сервиса Lite
Add-LiteInstance -DisplayName $lite_name -ApplicationName $lite_name -ServiceAccountName cprokey-srv
#Создание экземпляра Сервиса PushProxy
Install-PushInstance -ServiceAccountName cprokey-srv
Лицензирование КриптоПро Ключ и дополнительного ПО
Для обеспечения работоспособности СЭП требуются следующие лицензии:
- лицензия на необходимые модули аутентификации мобильных приложений КриптоПро Ключ,
- лицензия на модуль доступа Cloud CSP (если используется),
- лицензия на Сервис Подписи КриптоПро Ключ,
- лицензия на СКЗИ "КриптоПро CSP" версии 5.0 с поддержкой TLS-сервера,
- лицензия на ПО "КриптоПро OCSP Client" (если планируется создание подписи форматов, требующих взаимодействия со Службами УЦ),
- лицензия на ПО "КриптоПро TSP Client" (если планируется создание подписи форматов, требующих взаимодействия со Службами УЦ).
Ввод лицензии на компоненты КриптоПро Ключ
Для ввода лицензии выполните (выполняется при помощи утилиты CPShell (sudo cpsh
)):
# Модули аутентификации
# Создайте группу лицензий и добавьте в нее группу пользователей:
$gr_lic = Add-IdsLicenseGroup -DisplayName $idp_name -Name license -LicenseeGroups Default #Default в данном случае – имя группы пользователей по умолчанию
# Активируйте лицензии на право использования мобильных приложений и Cloud CSP и добавьте их в ранее созданную группу лицензий:
# Лицензия на модуль аутентификации мобильных приложений (повторить для разных мобильных приложений)
Add-IdsLicense -DisplayName $idp_name -SerialNumber ‘Серийный номер лицензии’ -CompanyName 'Наименование конечного пользователя' -LicenseGroupId $gr_lic.id
# Лицензия на модуль аутентификации Cloud CSP
Add-IdsLicense -DisplayName $idp_name -SerialNumber ‘Серийный номер лицензии’ -CompanyName 'Наименование конечного пользователя' -LicenseGroupId $gr_lic.id
# Активируйте лицензию Сервиса Подписи:
Add-SignLicense -SerialNumber ‘Серийный номер лицензии’ -CompanyName 'Наименование конечного пользователя'
Примечание
Если не указывать параметры SN
и CompanyName
, будет введена временная тестовая лицензия на три месяца.
Перезапустите экземпляры ЦИ и Сервиса Подписи:
Restart-IdsInstance -DisplayName $displayName
Restart-SignInstance -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 <серийный_номер>
Активация и запуск сервисов
Внимание!
Перед выполнением данного этапа необходимо выполнить подготовительный этап, установить КриптоПро Ключ и дополнительное ПО, настроить подключение к КриптоПро HSM или тестовому считывателю, развернуть необходимые компоненты КриптоПро Ключ.
#Активация nginx
sudo systemctl enable --now cpnginx.service
#Активация сервисов КриптоПро Ключ
sudo systemctl enable --now cprokey-idsrv-sts.service
sudo systemctl enable --now cprokey-signsrv-signserver.service
sudo systemctl enable --now cprokey-fesrv-frontend.service
sudo systemctl enable --now cprokey-auditsrv-analyticsservice.service
sudo systemctl enable --now cprokey-docsrv-documentstore.service
sudo systemctl enable --now cprokey-mdagsrv-cprokey.service
sudo systemctl enable --now cprokey-mdagsrv-cryptokey.service
sudo systemctl enable --now cprokey-litesrv-lite.service
sudo systemctl enable --now cprokey-pushsrv.service
Конечные точки
В КриптоПро Ключ доступна проверка состояния конечных точек сервисов. В случае если сервис работает
штатно, при обращении к его конечной точке при помощи POST/GET-запроса будет возвращен HTTP-ответ с
кодом StatusCode = "200"
и JSON-Content: {"status": "Healthy"}
.
Список конечных точек сервисов КриптоПро Ключ:
#Центр Идентификации
https://$hostname/$idp_name/health
#Сервис Подписи
https://$hostname/$ss_name/health
#Сервис Аудита
https://$hostname/$audit_name/health
#Сервис обработки документов
https://$hostname/$ds_name/health
#SDK Gateway
https://$hostname:4431/$mdag_name/health
#Сервис Lite
https://$hostname/$lite_name/health
#Сервис PUSH-уведомлений
https://$hostname/pushsrv/health
Аутентификация на Веб-интерфейсе
В КриптоПро Ключ аутентификация и Операторов и пользователей на Веб-интерфейсе выполняется через единую конечную точку:
https://$hostname/$fe_name
После успешного прохождения аутентификации пользователю или Оператору будут предоставлены соответствующие возможности КриптоПро Ключ.
Настройка экземпляров сервисов КриптоПро Ключ
Центр Идентификации
1. Настройте сервисный сертификат Центра Идентификации (ЦИ) для обеспечения межсервисного взаимодействия компонентов. Сервисный сертификат может быть создан (или установлен из файла) при помощи соответствующего командлета:
$ids = New-IdsServiceCertificate -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 – параметр, указывающий на необходимость установки самоподписанного сертификата в хранилище mRoot.
2. Создайте сертификат Центра Идентификации для подписания маркеров безопасности:
$ids_token = New-IdsServiceCertificate -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-IdsServiceCertificate -DisplayName $idp_name -Thumbprint $ids.Certificate.Thumbprint -Usage Service-Communications -Primary
Add-IdsServiceCertificate -DisplayName $idp_name -Thumbprint $ids_token.Certificate.Thumbprint -Usage Token-Signing -Primary
#Где:
#Primary – параметр, указывающий, что сертификат с выбранным отпечатком должен использоваться Центром Идентификации по умолчанию (быть первичным).
См. также:
4. Укажите порт, на котором будут прослушиваться соединения для аутентификации операторов и пользователей, с использованием сертификата:
Set-IdsProperties -DisplayName $idp_name -SslAuthPort 4430
5. Зарегистрируйте Оператора:
Add-IdsIdentityOperator -DisplayName $idp_name -Login "Логин Оператора" -Name "Имя Оператора" -IssuerName realsts -Certificate "Путь до файла сертификата оператора (.cer)"
6. Добавьте сертификат издателя сертификата Оператора в список доверенных:
Add-IdsX509Entry -DisplayName $idp_name -Certificate "Путь к файлу сертификата издателя сертификата оператора" -StoreName 'Client Certificate Issuers'
Внимание!
Установка сертификата издателя будет выполнена в БД Центра Идентификации. Выделенное системное хранилище сертификатов издателей не требуется.
7. Установите алгоритм шифрования ключа DPAPI для защиты cookie равным ГОСТ Р 34.12 - 2015 (К) в режиме MGM (выполнять только в случае, если сервисный сертификат Центра Идентификации создан с применением российских криптографических алгоритмов):
Set-IdsDataProtectionProperties -DisplayName $idp_name -EncryptionAlgorithm GR3412_2015_K_MGM
8. Сгенерируйте долгосрочный ключ DPAPI:
Add-IdsDataProtectionKey -DisplayName $idp_name -ActivateInDays 0 -ExpiresInDays 365
#В параметре -ActivateInDays указывается срок в днях, по истечении которого ключ будет активирован. При значении "0" – ключ активируется немедленно.
#В параметре -ExpiresInDays указывается срок действия ключа.
9. Добавьте криптопровайдеры, которые будут использоваться для создания ключей аутентификации мобильных приложений:
#Профиль двух провайдеров HSM 80-ого типа с экспортируемыми мастер-ключами (МК)
Add-IdsCryptoProviderProfile -DisplayName $idp_name -Name "mdag" -PrimaryProviderName "Crypto-Pro GOST R 34.10-2012 HSM CSP" -PrimaryProviderType 80 -Type MyDss -Exportable
10. Создайте группу лицензий и добавьте в нее группу пользователей:
$gr_lic = Add-IdsLicenseGroup -DisplayName $idp_name -Name license -LicenseeGroups Default #Default в данном случае – имя группы пользователей по умолчанию
11. Активируйте лицензии на право использования мобильных приложений и Cloud CSP и добавьте их в ранее созданную группу лицензий:
#Лицензия на модуль аутентификации мобильных приложений
Add-IdsLicense -DisplayName $idp_name -SerialNumber ‘Серийный номер лицензии’ -CompanyName 'Наименование конечного пользователя' -LicenseGroupId $gr_lic.id
#Лицензия на модуль аутентификации Cloud CSP
Add-IdsLicense -DisplayName $idp_name -SerialNumber ‘Серийный номер лицензии’ -CompanyName 'Наименование конечного пользователя' -LicenseGroupId $gr_lic.id
См. также:
12. Включите метод аутентификации с использованием мобильных приложений:
Enable-IdsAuthenticationMethod -DisplayName $idp_name -Uri http://dss.cryptopro.ru/identity/authenticationmethod/mydss
Сервис Подписи
1. Создайте сертификат Сервиса Подписи для межсервисного взаимодействия:
$ss = New-SignServiceCertificate -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-SignServiceCertificate -DisplayName $ss_name -Thumbprint $ss.Certificate.Thumbprint -Primary
3. Настройте отношения доверия с Центром Идентификации:
Add-SignClaimsProviderTrust -DisplayName $ss_name -IssuerName realsts -Certificate /opt/tmp/ids_self.cer
Add-SignClaimsProviderTrust -DisplayName $ss_name -IssuerName realsts2 -Certificate /opt/tmp/ids_self_token.cer
4. Активируйте лицензию Сервиса Подписи:
Add-SignLicense -DisplayName $ss_name -SerialNumber ‘Серийный номер лицензии’ -CompanyName 'Наименование конечного пользователя'
5. Добавьте криптопровайдеры:
#Провайдер HSM 80-ого типа с экспортируемым мастер-ключом (МК)
Add-SignCryptoProvider -DisplayName $ss_name -ProviderName "Crypto-Pro GOST R 34.10-2012 HSM CSP" -ProviderType 80 -TypeId GostWithMasterKey -Exportable
#RSA-провайдер HSM 24-ого типа с экспортируемым МК
Add-SignCryptoProvider -DisplayName $ss_name -ProviderName "Crypto-Pro Enhanced RSA and AES HSM CSP" -ProviderType 24 -TypeId RSAWithMasterKey -Exportable
#Провайдер локального CSP 80-ого типа с экспортируемым МК
Add-SignCryptoProvider -DisplayName $ss_name -ProviderName "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" -ProviderType 80 -TypeId GostWithMasterKey -Exportable
#RSA-провайдер локального CSP 24-ого типа с экспортируемым МК
Add-SignCryptoProvider -DisplayName $ss_name -ProviderName "Crypto-Pro Enhanced RSA and AES CSP" -ProviderType 24 -TypeId RSAWithMasterKey -Exportable
#Lite-провайдер локального CSP 80-ого типа для создания неподписанных запросов для мобильных приложений
Add-SignCryptoProvider -DisplayName $ss_name -ProviderName "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" -ProviderType 80 -TypeId Lite
6. Добавьте офлайн-обработчик запросов на сертификат:
Add-SignEnrollment -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 /path/to/oper.pfx -pfx -pin <pin_for_pfx> -store mmy
#Выдайте права на чтение УЗ dss_service на ключевой контейнер с сертификатом Оператора ЦР
#Объявите параметры обработчика:
$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-SignEnrollment -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
#Выдайте права на чтение УЗ dss_service на ключевые контейнеры с сертификатами Операторов ЦР
#Объявите параметры обработчика:
$endn = 'УЦ REST' #Отображаемое имя обработчика
$ra_foldername = 'RA' #Наименование целевой папки на ЦР
$ra_url = 'https://ra_hostname' #Адрес ЦР
$oper_sign = 'отпечаток сертификата оператора ЦР для подписания запросов'
$oper_tls = 'отпечаток сертификата оператора ЦР для 2-X TLS'
#Добавляем обработчик:
Add-SignEnrollment -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 – модуль УЦ будет пытаться переименовать пользователя ЦР только в том случае, если запрос на сертификат создавался от имени Оператора Ключа (не путать с оператором УЦ).
#- AdminUser - модуль УЦ будет пытаться переименовать пользователя ЦР всегда.
9. Зарегистрируйте службу TSP:
Add-SignTspService -DisplayName $ss_name -Name <имя службы TSP> -Title <отображаемое имя службы TSP> -Url <адрес службы TSP>
# Добавление тестовой службы TSP:
Add-SignTspService -DisplayName $ss_name -Name testca2012 -Title testca2012 -Url http://testca2012.cryptopro.ru/tsp/tsp.srf
10. Добавьте проверяющую сторону Сервиса Подписи:
Add-IdsRelyingPartyTrust -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-SignTransformPlugin -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-SignTransformPlugin -DisplayName $ss_name -Assembly CryptoPro.Plugins.Xml.Transforms.dll -Classname CryptoPro.Plugins.Xml.Transforms.XmlFssTransform -Identifiers "urn:xml-dsig:transformation:v1.1"
Веб-интерфейс
1. Создайте сертификат Веб-интерфейса для межсервисного взаимодействия:
$fe = New-FeServiceCertificate -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-FeServiceCertificate -DisplayName $fe_name -Thumbprint $fe.Certificate.Thumbprint -Primary
3. Настройте отношения доверия с Центром Идентификации:
Add-FeClaimsProviderTrust -DisplayName $fe_name -IssuerName realsts -Certificate /opt/tmp/ids_self.cer
Add-FeClaimsProviderTrust -DisplayName $fe_name -IssuerName realsts2 -Certificate /opt/tmp/ids_self_token.cer
4. Укажите адреса Центра Идентификации и Сервиса Подписи:
Set-FEProperties -DisplayName $fe_name -SignServerAddress http://$hostname/$ss_name -StsAddress http://$hostname/$idp_name
5. Установите алгоритм шифрования ключа DPAPI (Data Protection API) для шифрования cookie равным ГОСТ Р 34.12 - 2015 (К) в режиме MGM (выполнять только в том случае, если сервисный сертификат Веб-интерфейса создан с применением российских криптографических алгоритмов):
Set-FeDataProtectionPropterties -DisplayName $fe_name -EncryptionAlgorithm GR3412_2015_K_MGM
6. Сгенерируйте долгосрочный ключ для шифрования cookie:
Add-FeDataProtectionKey -DisplayName $fe_name -ActivateInDays 0 -ExpiresInDays 365
7. Выполните настройку для обеспечения связки "Центр Идентификации" – "Веб-интерфейс":
#Создание oauth-клиента на Центре Идентификации
Add-IdsClient -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
#Получение значение секрета для созданного oauth-клиента
$clientfe_secret = (Get-IdsClientSecret -DisplayName $idp_name -ClientId "cryptopro.dss.frontend.$fe_name").value
#Настройка доступа на Веб-интерфейсе:
Set-FeOidcSettings -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"
8. Добавьте проверяющую сторону Веб-Интерфейса:
Add-IdsRelyingPartyTrust -DisplayName $idp_name -name frontend -Description "Веб-интерфейс" -Identities "urn:cryptopro:dss:frontend:$fe_name"
9. Настройте интеграция Веб-Интерфейса и КриптоПро SVS (при его использовании):
Set-FeProperties -DisplayName $fe_name -VerificationServiceAddress https://svs_hostname/svs_appname
Сервис Аудита
1. Создайте сертификат Сервиса Аудита для межсервисного взаимодействия:
$audit = New-AuditServiceCertificate -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-AuditServiceCertificate -DisplayName $audit_name -Thumbprint $audit.Certificate.Thumbprint -Primary
3. Настройте отношения доверия с Центром Идентификации:
Add-AuditClaimsProviderTrust -DisplayName $audit_name -IssuerName realsts -Certificate /opt/tmp/ids_self.cer
Add-AuditClaimsProviderTrust -DisplayName $audit_name -IssuerName realsts2 -Certificate /opt/tmp/ids_self_token.cer
4. Добавьте проверяющую сторону Сервиса Аудита:
Add-IdsRelyingPartyTrust -DisplayName $idp_name -name analyticsservice -Identities "urn:cryptopro:dss:analytics:$audit_name" -Description "Сервис Аудита"
5. Настройте интеграцию прочих Сервисов с Сервисом Аудита:
#Центр Идентификации
Set-IdsProperties -DisplayName $idp_name -AnalyticsServiceAddress http://$hostname/$audit_name
#Веб-Интерфейс
Set-FeProperties -DisplayName $fe_name -AnalyticsServiceAddress http://$hostname/$audit_name
#mDAG
Set-MdagProperties -DisplayName $mdag_name -AnalyticsBaseAddress http://$hostname/$audit_name
Set-MdagProperties -DisplayName $mdag_name_2 -AnalyticsBaseAddress http://$hostname/$audit_name
6. Добавьте модули формирования событий Аудита:
#Центр Идентификации
New-IdsAudit -DisplayName $idp_name -AuditServiceAddress http://$hostname/$audit_name/api/writer
#Сервис Подписи
New-SignAudit -DisplayName $ss_name -AuditServiceAddress http://$hostname/$audit_name/api/writer
#Сервис Обработки Документов
New-DsAudit -DisplayName $ds_name -AuditServiceAddress http://$hostname/$audit_name/api/writer
См. также:
Сервис Обработки Документов
1. Создайте сертификат Сервиса обработки документов для межсервисного взаимодействия:
$ds = New-DsServiceCertificate -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-DsServiceCertificate -DisplayName $ds_name -Thumbprint $ds.Certificate.Thumbprint -Primary
3. Настройте отношения доверия с Центром Идентификации и Сервисом Подписи:
Add-DsClaimsProviderTrust -DisplayName $ds_name -IssuerName realsts -Certificate /opt/tmp/ids_self.cer
Add-DsClaimsProviderTrust -DisplayName $ds_name -IssuerName realsts2 -Certificate /opt/tmp/ids_self_token.cer
Add-DsClaimsProviderTrust -DisplayName $ds_name -IssuerName signserver -Certificate /opt/tmp/ss_self.cer
4. Добавьте проверяющую сторону Сервиса обработки документов:
Add-IdsRelyingPartyTrust -DisplayName $idp_name -name documentstore -Description "Сервис обработки документов" -Identities "urn:cryptopro:dss:documentstore:$ds_name"
5. Настройте интеграцию прочих сервисов с Сервисом Обработки Документов:
#Центр Идентификации
Set-IdSProperties -DisplayName $idp_name -DocumentStoreAddress http://$hostname/$ds_name
#Сервис Подписи
Set-SignProperties -DisplayName $ss_name -DocumentStoreAddress http://$hostname/$ds_name
#Веб-интерфейс
Set-FeProperties -DisplayName $fe_name -DocumentStoreAddress http://$hostname/$ds_name
#mDAG
Set-MdagProperties -DisplayName $mdag_name -DocumentStoreBaseAddress http://$hostname/$ds_name
Set-MdagProperties -DisplayName $mdag_name_2 -DocumentStoreBaseAddress http://$hostname/$ds_name
Настройка PUSH-уведомлений
Настройка PUSH-уведомлений представляет собой набор следующих шагов, некоторые из которых могут быть пропущены в зависимости от текущих настроек.
- Настройка Сервиса PUSH-уведомлений.
- Настройка плагина рассылки PUSH-уведомлений.
См. также:
Настройка Сервиса PUSH-уведомлений (PUSH Service)
Сервис PUSH-уведомлений позволяет управлять доставкой PUSH-уведомлений пользователям в различные мобильные приложения. При необходимости PUSH Service позволяет организовать соединение с внешними PUSH-серверами из выделенного сегмента сети (DMZ), как это изображено на рисунке ниже.
Предварительные настройки
PUSH Service представляет собой веб-сервис, не требующий наличия БД. Перед установкой и развертыванием PUSH Service необходимо обеспечить наличие следующих компонентов:
- Сервер в DMZ для доступа к PUSH-серверам (выделять отдельный сервер под PUSH Service необязательно);
- ОС из списка поддерживаемых ОС (см. Общее Описание из комплекта документации);
- Установленный и настроенный веб-сервер;
- Установленный PUSH Service (входит в комплект поставки либо может быть получен на сайте);
- Созданный экземпляр PUSH Service;
- Доступ к PUSH-серверам.
Примечание
PUSH Service использует новый протокол взаимодействия с сервером Apple Push Notification Service. Доступ к APNS осуществляется по протоколу HTTP/2 и TLS 1.2.
- Development server:
api.sandbox.push.apple.com:443
- Production server:
api.push.apple.com:443
Доступ к Google API HTTP v1: *.googleapis.com:443
.
Доступ к Huawei Mobile Services:
https://oauth-login.cloud.huawei.com/oauth2/v2/token
https://push-api.cloud.huawei.com/v1
Примечание
Для отправки PUSH-уведомлений на устройства Apple требуется сертификат с клиентской
аутентификацией (-ApnClientCertPath
и -ApnClientCertPassword
) на Apple Push Notification Service. Получить данный сертификат можно по запросу
на dsssupport@cryptopro.ru
. В запросе необходимо указать также имя приложения, для которого требуется получать уведомления.
Для отправки PUSH-уведомлений на устройства Android требуется получить ключ доступа к Firebase
Google API HTTP v1 (-ServiceAccountFile
). Получить данный ключ можно по запросу на dsssupport@cryptopro.ru
.
В запросе необходимо указать также имя приложения, для которого требуется получать уведомления.
Для отправки PUSH-уведомлений на устройства Huawei требуется получить ключ доступа к
HUAWEI Mobile Services (-ClientID
, -ClientSecret
). Получить данный ключ можно по запросу на dsssupport@cryptopro.ru
.
В запросе необходимо указать также имя приложения, для которого требуется получать уведомления.
Настройка уведомлений для мобильного приложения
Внимание!
Рекомендуется настраивать один модуль для одного мобильного приложения.
1. Создайте модуль PUSH Service, плагины которого будут использоваться для отправки Push-уведомлений в мобильное приложение на устройствах под управлением ОС iOS и Android (включая устройства без поддержки сервисов Google Play). Модуль PUSH Service представляет собой набор плагинов, позволяющих отправлять PUSH-уведомления на устройства пользователей под управлением ОС iOS и Android (в т.ч. для устройств Huawei).
$pp_module = "mymobileapp" #Имя модуля сервиса PUSH Service для выбранного мобильного приложения
New-PushModule -ModuleName $pp_module -AuthLogin {{логин}} -AuthPassword {{пароль}}
#В AuthLogin и AuthPassword передаются соответственно произвольное имя УЗ и пароль, которые были\будут указаны при создании прикладной системы оповещения в настройке плагинов (см. ниже)
2. Настройте плагин отправки Push-уведомлений для устройств под управлением ОС iOS:
Set-PushModuleApnProperties -ModuleName $pp_module -AppBundleIdentifier "..." -TeamId "..." -P8PrivateKeyId "..." -P8PrivateKeyFile "Путь к файлу ..."
#Где:
* `-AppBundleIdentifier` - уникальный идентификатор приложения в магазине приложений App Store;
* `-TeamId` - уникальный идентификатор группы разработчиков;
* `-P8PrivateKeyId` идентификатор ключа, используемого для подключения к APN;
* `-P8PrivateKeyFile` - контейнер с закрытым ключом для подключения к APN;
3. Настройте плагин отправки Push-уведомлений для устройств под управлением ОС Android (с поддержкой Google-сервисов):
Set-PushModuleFcmProperties -ModuleName $pp_module -GoogleServiceKey "..."
#Где:
#GoogleServiceKey – ключ доступа к серверу рассылки Push-уведомлений Google
4. Настройте плагин отправки Push-уведомлений для устройств под управлением ОС Android (без поддержки Google-сервисов, устройства Huawei):
Set-PushModuleHmsProperties -ModuleName $pp_module -ClientId "..." -ClientSecret "..."
#Где:
#ClientId – идентификатор для подключения к серверу рассылки Push-уведомлений Huawei
#ClientSecret – ключ доступа к серверу рассылки Push-уведомлений
5. Включите плагины отправки Push-уведомлений:
# Включение модуля APNS
Enable-PushModuleApn -ModuleName $pp_module
# Включение модуля FCM
Enable-PushModuleFcm -ModuleName $pp_module
# Включение модуля HMS
Enable-PushModuleHms -ModuleName $pp_module
Настройка плагинов рассылки PUSH-уведомлений
В большинстве случаев данный этап мог быть выполнен на этапе развертывания Сервиса Взаимодействия с SDK. Данный этап необходим, если настройка плагина выполняется впервые либо необходима перенастройка существующего плагина.
В ЦИ может быть зарегистрировано несколько наборов плагинов (прикладных систем) для отправки PUSH-уведомлений. Каждая из этих прикладных систем ассоциирована с одним мобильным приложением, используемым какой-либо организацией.
Примечание
Несколько прикладных систем, находящихся в пределах одного ЦИ, могут быть подключены к одному экземпляру сервиса PUSH Service. При этом для каждой из систем на сервисе PUSH Service должен быть зарегистрирован соответствующий модуль.
Примечание
Несколько экземпляров ЦИ с зарегистрированными на них прикладными системами также могут быть подключены к одному экземпляру PUSH Service. В этом случае для каждой из прикладных систем каждого экземпляров ЦИ должен быть зарегистрирован соответствующий модуль на сервисе PUSH Service.
Настройка нового плагина рассылки PUSH-уведомлений
Для того, чтобы настроить новый транспортный плагин для использования с PUSH Service, необходимо задать следующие параметры в командлете Add-MyDssSystem:
PushType
- сущность, создающая PUSH-уведомления. Для PUSH Service необходимо использовать значениеPushProxy
.PushProxyLogin
,PushProxyPassword
- учетные данные для подключения к экземпляру сервиса PUSH Service, которые были заданы на этапе настройки модуля PUSH ServicePushProxyAddress
- URL-адрес PUSH Service
URL-адрес сервиса PUSH Service имеет следующий формат:
http(s)://<hostname>/pushproxy/<modulename>
где
hostname
- DNS-имя сервера, на котором развернут PUSH Service;pushproxy
- имя экземпляра сервиса, указанное при его создании в параметре-InstanceName
;modulename
- имя модуля PUSH Service.
Пример развертывания:
#Имя экземпляра Центра Идентификации
$STSAppName = "STS"
#URL MDAG
$mdagUrl = "https://<hostname>/mdag"
#Отображаемое имя системы
$systemDisplayName = "system_display_name"
#Регистрация системы
#При регистрации также будут зарегистрированы модули оповещения и OAuth-клиент
Add-IdsMobileAppConfiguration -DisplayName $idp_name -Name cprokey -MyDssAddress "https://$($hostname):4431/$mdag_name" -PushType PushProxy -PushProxyAddress "http://$($hostname)/pushsrv/$pp_module" -PushProxyLogin Admin -PushProxyPassword "1qaz@WSX"```
Настройка существующего плагина рассылки PUSH-уведомлений
Для того, чтобы перенаправить PUSH-уведомления, отправляемые траспортным плагином, на сервис PUSH Service, необходимо получить идентификатор данного плагина. Получить идентификатор возможно при помощи командлета Get-IdsPlugin. После этого необходимо задать новые параметры для выбранного плагина:
UsePushProxy
- включение/отключение отправки Push-уведомлений через сервис PUSH ServicePushProxyLogin
,PushProxyPassword
- учетные данные для подключения к экземпляру сервиса PUSH Service, которые были заданы на этапе настройки модуля PUSH ServicePushProxyAddress
- URL-адрес PUSH Service
URL-адрес сервиса PUSH Service имеет следующий формат:
http(s)://<hostname>/pushproxy/<modulename>
где
hostname
- DNS-имя сервера, на котором развернут PUSH Service;pushproxy
- имя экземпляра сервиса, указанное при его создании в параметре-InstanceName
;modulename
- имя модуля PUSH Service.
Пример перенастройки:
#Подготовка данных
#Идентификатор прикладной системы. Значение можно получить при помощи командлета Get-IdsMobileAppConfiguration
$systemID = "ID прикладной системы"
#Наименование экземпляра ЦИ
$STSAppName = "STS"
$hostname = "DNS-имя сервера, на котором развернут сервис PushProxy"
$pushproxy_instance = "Имя экземпляра сервиса PushProxy"
$modulename = "Имя модуля рассылки сервиса PushProxy"
$proxy_login = "Логин для подключения к модулю рассылки сервиса PushProxy"
$proxy_password = "Пароль для подключения к модулю рассылки сервиса PushProxy"
#Интеграция с сервисом PushProxy
Set-IdsMobileAppConfiguration -DisplayName $STSAppName -SystemId $systemID -PushType PushProxy -PushProxyAddress "https://$hostname/$pushproxy_instance/$modulename" -PushProxyLogin $proxy_login -PushProxyPassword $proxy_password
#Перезапуск экземпляра ЦИ
Restart-IdsInstance
Шаблоны PUSH-уведомлений
Шаблоны уведомлений КриптоПро Ключ
#CertificateCreated
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 20 -MyDssSystemId $mydsssystem.id -Text 'Изменился статус сертификата' -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.issued", "title": "Изменился статус сертификата", "body": " Сертификат выпущен и готов к работе", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "certificateRequestID": "{0:RequestID}", "login":"{0:Login}", "action":"cert_created"}'
#CertificateDeleted
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 46 -MyDssSystemId $mydsssystem.id -Text 'Сертификат удалён' -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.default", "title": "Сертификат удалён", "body": "Для учетной {0:Login} был удален сертификат", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "login":"{0:Login}", "action":"cert_deleted"}'
#CertificateRevoke
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 48 -MyDssSystemId $mydsssystem.id -Text 'Сертификат отозван' -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.revoked", "title": "Изменился статус сертификата", "body": "Для учетной {0:Login} был отозван сертификат", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "login":"{0:Login}", "action":"cert_revoked"}'
#CertificateHold
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 49 -MyDssSystemId $mydsssystem.id -Text 'Действие сертификата приостановлено' -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.hold", "title": "Изменился статус сертификата", "body": "Для учетной {0:Login} действие сействие сертификата приостановлено", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "login":"{0:Login}", "action":"cert_suspended"}'
#CertificateUnhold
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 50 -MyDssSystemId $mydsssystem.id -Text 'Действие сертификата возобновлено' -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.unhold", "title": "Изменился статус сертификата", "body": "Для учетной {0:Login} действие сействие сертификата возобновлено", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "login":"{0:Login}", "action":"cert_resumed"}'
#CertificateSetDefault
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 53 -MyDssSystemId $mydsssystem.id -Text 'Назначен сертификат по умолчанию' -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.default", "title": "Установлен сертификат по умолчанию", "body": "Для учетной {0:Login} установлен сертификат по умолчанию", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "login":"{0:Login}", "action":"cert_change_default"}'
#CertificateInstalled
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 58 -MyDssSystemId $mydsssystem.id -Text 'Сертификат установлен' -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.issued", "title": "Изменился статус сертификата", "body": " Сертификат выпущен и готов к работе", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "login":"{0:Login}", "action":"cert_sent"}'
#SecondaryAuthLogin
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 92 -MyDssSystemId $mydsssystem.id -Text 'Доступна новая операция для подтверждения' -Payload '{"app-event-type":"operations.new", "loc_key": "notification.operation.available", "title":"Доступна новая операция для подтверждения", "body": "Новая операция ожидает подтверждения в приложении", "userID": "{0:UserID}", "transactionID": "{0:TransactionId}", "login":"{0:Login}", "action":"operation_created"}'
#SecondaryAuthSign
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 93 -MyDssSystemId $mydsssystem.id -Text 'Доступна новая операция для подтверждения' -Payload '{"app-event-type":"operations.new", "loc_key": "notification.operation.available", "title": "{0:CertFriendlyName}", "body": "Доступна новая операция для подтверждения", "userID": "{0:UserID}", "transactionID": "{0:TransactionId}"}'
#SecondaryAuthSignDocs
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 94 -MyDssSystemId $mydsssystem.id -Text 'Доступна новая операция для подтверждения' -Payload '{"app-event-type":"operations.new", "loc_key": "notification.operation.available", "title": "Доступна новая операция для подтверждения", "body": "Новый пакет документов на подпись ожидает подтверждения в приложении", "userID": "{0:UserID}", "transactionID": "{0:TransactionId}", "login":"{0:Login}", "action":"sign_operation_created"}'
#CertificateRequestOperationExecuted
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 270 -MyDssSystemId $mydsssystem.id -Text 'Изменился статус сертификата' -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.issued", "title": "Изменился статус сертификата", "body": " Сертификат выпущен и готов к работе", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "certificateRequestID": "{0:RequestID}", "login":"{0:Login}", "action":"cert_created"}'
#ChangeCertificateStatusOperationExecuted
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 276 -MyDssSystemId $mydsssystem.id -Text 'Назначен сертификат по умолчанию' -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.default", "title": "Установлен сертификат по умолчанию", "body": "Для учетной {0:Login} установлен сертификат по умолчанию", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "login":"{0:Login}", "action":"cert_change_default"}'
#DeleteCertificateOperationExecuted
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 280 -MyDssSystemId $mydsssystem.id -Text 'Сертификат удалён' -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.default", "title": "Сертификат удалён", "body": "Для учетной {0:Login} был удален сертификат", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "login":"{0:Login}", "action":"cert_deleted"}'
#RevokeCertificateOperationExecuted
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 282 -MyDssSystemId $mydsssystem.id -Text 'Сертификат отозван' -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.revoked", "title": "Изменился статус сертификата", "body": "Для учетной {0:Login} был отозван сертификат", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "login":"{0:Login}", "action":"cert_revoked"}'
#HoldCertificateOperationExecuted
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 284 -MyDssSystemId $mydsssystem.id -Text 'Действие сертификата приостановлено' -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.hold", "title": "Изменился статус сертификата", "body": "Для учетной {0:Login} действие сействие сертификата приостановлено", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "login":"{0:Login}", "action":"cert_suspended"}'
#UnHoldCertificateOperationExecuted
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 286 -MyDssSystemId $mydsssystem.id -Text 'Действие сертификата возобновлено' -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.unhold", "title": "Изменился статус сертификата", "body": "Для учетной {0:Login} действие сертификата возобновлено", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "login":"{0:Login}", "action":"cert_resumed"}'
#AssignMyDssSdkDevice
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 234 -MyDssSystemId $mydsssystem.id -Text 'Подтвердите данные учётной записи' -Payload '{ "app-event-type":"users.state.changed", "title_loc_key": "notification.user.info.changed", "loc_key": "notification.user.accept", "title": "Изменились данные пользователя", "body": "Оператор привязал устройство к учетной записи {0:Login}", "userID": "{0:UserID}", "kid":"{0:MyDssKid}", "login":"{0:Login}", "action":"binded"}'
#myDssDeviceLocked
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 320 -MyDssSystemId $mydsssystem.id -Text 'Профиль устройства заблокирован на сервере' -Payload '{ "app-event-type":"users.state.changed", "title_loc_key": "notification.user.state.changed", "loc_key": "notification.user.blocked", "title": "Изменились данные пользователя", "body": "Связь устройства с учётной записью {0:Login} была заблокирована", "userID": "{0:UserID}", "kid":"{0:MyDssKid}", "login":"{0:Login}", "action":"blocked"}'
#myDssDeviceUnlocked
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 321 -MyDssSystemId $mydsssystem.id -Text 'Профиль устройства разблокирован на сервере' -Payload '{ "app-event-type":"users.state.changed", "title_loc_key": "notification.user.state.changed", "loc_key": "notification.user.unblocked", "title": "Изменились данные пользователя", "body": "Связь устройства с учётной записью {0:Login} была разблокирована", "userID": "{0:UserID}", "kid":"{0:MyDssKid}", "login":"{0:Login}", "action":"unblocked"}'
#myDssDeviceDelete
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 322 -MyDssSystemId $mydsssystem.id -Text 'Устройство отвязано от учётной записи' -Payload '{ "app-event-type":"users.state.changed", "title_loc_key": "notification.user.state.changed", "loc_key": "notification.user.deleted", "title": "Изменились данные пользователя", "body": "Связь устройства с учётной записью {0:Login} была разорвана", "userID": "{0:UserID}", "kid":"{0:MyDssKid}", "login":"{0:Login}", "action":"unbinded"}'
Шаблоны уведомлений КриптоКлюч
#AssignMyDssSdkDevice
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 234 -MyDssSystemId $mydsssystem_cryptokey.id -Text "Подтвердите данные учётной записи" -Payload '{ "app-event-type":"users.state.changed", "title_loc_key": "notification.user.info.changed", "loc_key": "notification.user.accept", "title": "Изменились данные подписи", "body": "Подтвердите данные учётной записи", "userID": "{0:UserID}"}'
#myDssDeviceLocked
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 320 -MyDssSystemId $mydsssystem_cryptokey.id -Text "Профиль устройства заблокирован на сервере" -Payload '{ "app-event-type":"users.state.changed", "title_loc_key": "notification.user.state.changed", "loc_key": "notification.user.blocked", "title": "Изменился статус профиля", "body": "Профиль устройства заблокирован на сервере", "userID": "{0:UserID}"}'
#myDssDeviceUnlocked
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 321 -MyDssSystemId $mydsssystem_cryptokey.id -Text "Профиль устройства разблокирован на сервере" -Payload '{ "app-event-type":"users.state.changed", "title_loc_key": "notification.user.state.changed", "loc_key": "notification.user.unblocked", "title": "Изменился статус профиля", "body": "Профиль устройства разблокирован на сервере", "userID": "{0:UserID}"}'
#CertificateInstalled
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 58 -MyDssSystemId $mydsssystem_cryptokey.id -Text "Изменился статус сертификата" -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.issued", "title": "Изменился статус сертификата", "body": "Сертификат выпущен и готов к работе", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "certificateRequestID": "{0:RequestID}"}'
#CertificateRequestOperationExecuted
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 270 -MyDssSystemId $mydsssystem_cryptokey.id -Text "Изменился статус сертификата" -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.issued", "title": "Изменился статус сертификата", "body": "Сертификат выпущен и готов к работе", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "certificateRequestID": "{0:RequestID}"}'
#CertificateCreated
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 20 -MyDssSystemId $mydsssystem_cryptokey.id -Text "Изменился статус сертификата" -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.issued", "title": "Изменился статус сертификата", "body": "Сертификат выпущен и готов к работе", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "certificateRequestID": "{0:RequestID}"}'
#CertificateHold
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 49 -MyDssSystemId $mydsssystem_cryptokey.id -Text "Действие сертификата приостановлено" -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.hold", "title": "Изменился статус сертификата", "body": "Действие сертификата приостановлено", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "certificateRequestID": "{0:RequestID}"}'
#HoldCertificateOperationExecuted
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 284 -MyDssSystemId $mydsssystem_cryptokey.id -Text "Действие сертификата приостановлено" -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.hold", "title": "Изменился статус сертификата", "body": "Действие сертификата приостановлено", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "certificateRequestID": "{0:RequestID}"}'
#CertificateUnhold
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 50 -MyDssSystemId $mydsssystem_cryptokey.id -Text "Действие сертификата возобновлено" -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.unhold", "title": "Изменился статус сертификата", "body": "Действие сертификата возобновлено", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "certificateRequestID": "{0:RequestID}"}'
#UnHoldCertificateOperationExecuted
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 286 -MyDssSystemId $mydsssystem_cryptokey.id -Text "Действие сертификата возобновлено" -Payload '{ "app-event-type":"certificates.state.changed", "title_loc_key": "notification.certificate.state.changed", "loc_key": "notification.certificate.unhold", "title": "Изменился статус сертификата", "body": "Действие сертификата возобновлено", "userID": "{0:UserID}", "certificateID": "{0:CertificateID}", "certificateRequestID": "{0:RequestID}"}'
#SecondaryAuthLogin
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 92 -MyDssSystemId $mydsssystem_cryptokey.id -Text "Доступна новая операция для подтверждения" -Payload '{"app-event-type":"operations.new", "loc_key": "notification.operation.available", "body": "Доступна новая операция для подтверждения", "userID": "{0:UserID}", "transactionID": "{0:TransactionId}"}'
#SecondaryAuthSign
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 93 -MyDssSystemId $mydsssystem_cryptokey.id -Text "Доступна новая операция для подтверждения" -Payload '{"app-event-type":"operations.new", "loc_key": "notification.operation.available", "body": "Доступна новая операция для подтверждения", "userID": "{0:UserID}", "transactionID": "{0:TransactionId}"}'
#SecondaryAuthSignDocs
Add-IdsPushFormatterTemplate -DisplayName $idp_name -EventID 94 -MyDssSystemId $mydsssystem_cryptokey.id -Text "Доступна новая операция для подтверждения" -Payload '{"app-event-type":"operations.new", "loc_key": "notification.operation.available", "body": "Доступна новая операция для подтверждения", "userID": "{0:UserID}", "transactionID": "{0:TransactionId}"}'
Сервис взаимодействия с SDK (mDAG)
1. Добавьте проверяющие стороны mDAG:
#КриптоПро Ключ
Add-IdsRelyingPartyTrust -DisplayName $idp_name -name cprokey -Description cprokey -Identities "urn:cryptopro:dss:mdag:$mdag_name"
#КриптоКлюч
Add-IdsRelyingPartyTrust -DisplayName $idp_name -name cryptokey -Description cryptokey -Identities "urn:cryptopro:dss:mdag:$mdag_name_2"
2. Создайте прикладные системы оповещения (при этом также создается oauth-клиент на Центре Идентификации, который нужно будет использовать для настройки связки "Центр Идентификации" - mDAG).
#КриптоПро Ключ
$mydsssystem = Add-IdsMobileAppConfiguration -DisplayName $idp_name -Name cprokey -MyDssAddress "https://$($hostname):4431/$mdag_name" -PushType PushProxy -PushProxyAddress "http://$($hostname)/pushsrv/$pp_module" -PushProxyLogin Admin -PushProxyPassword "1qaz@WSX"
#КриптоКлюч
$mydsssystem_cryptokey = Add-IdsMobileAppConfiguration -DisplayName $idp_name -Name cryptokey -MyDssAddress "https://$($hostname):4431/$mdag_name_2" -PushType PushProxy -PushProxyAddress "http://$($hostname)/pushsrv/$pp_module_cryptokey" -PushProxyLogin Admin -PushProxyPassword "1qaz@WSX"
#4431 – выделенный порт, на котором mDAG будет прослушивать соединения от мобильных приложений
3. Объявите переменные с данными oauth-клиентов, созданных вместе с прикладными системами оповещения:
#КриптоПро Ключ
$mdagclient = Get-IdsClient -DisplayName $idp_name|where {$_.ExtendedProperties["MyDssSystemId"] -eq $mydsssystem.id}
#КриптоКлюч
$mdagclient_cryptokey = Get-IdsClient -DisplayName $idp_name|where {$_.ExtendedProperties["MyDssSystemId"] -eq $mydsssystem_cryptokey.id}
4. Сгенерируйте бессрочные секреты для oauth-клиентов:
#КриптоПро Ключ
Set-IdsClient -DisplayName $idp_name -ClientId $mdagclient.ClientId -GenerateSecret -SecretLifetime 0
#КриптоКлюч
Set-IdsClient -DisplayName $idp_name -ClientId $mdagclient_cryptokey.ClientId -GenerateSecret -SecretLifetime 0
5. Объявите переменные со значениями сгенерированных бессрочных секретов oauth-клиентов:
#КриптоПро Ключ
$mdagclient_secret = (Get-IdsClientSecret -DisplayName $idp_name -ClientId $mdagclient.ClientId).value
#КриптоКлюч
$mdagclient_cryptokey_secret = (Get-IdsClientSecret -DisplayName $idp_name -ClientId $mdagclient_cryptokey.ClientId).value
6. Настройте интеграцию Центра Идентификации и Сервиса Подписи с mDAG:
#КриптоПро Ключ
Set-MdagProperties -DisplayName $mdag_name -ClientId $mdagclient.ClientId -ClientSecret $mdagclient_secret -IdpBaseAddress http://$hostname/$idp_name -SignServerBaseAddress http://$hostname/$ss_name
#КриптоКлюч
Set-MdagProperties -DisplayName $mdag_name_2 -ClientId $mdagclient_cryptokey.ClientId -ClientSecret $mdagclient_cryptokey_secret -IdpBaseAddress http://$hostname/$idp_name -SignServerBaseAddress http://$hostname/$ss_name
7. Активируйте возможность использования сценария анонимной регистрации пользователей из мобильного приложения, а также проверку уникальности отпечатка мобильного устройства:
Set-IdsMyDssProperties -DisplayName $idp_name -MyDssSelfRegEnabled 1 -DeviceFingerprintRequired 1
См. также:
Удаление экземпляров сервисов
При удалении экземпляров сервисов необходимо выполнить следующие действия.
1. Остановка сервисов.
sudo systemctl stop cprokey-*.service
2. Отключение Сервиса Операций от Сервиса Подписи и Центра Идентификации.
#Отключение Сервиса Обработки Операций от экземпляра Сервиса "Центр Идентификации"
Disconnect-IdsOperationStore -DisplayName $idp_name
#Отключение Сервиса Обработки Операций от экземпляра Сервиса Подписи (с опциональным флагом DeleteDB для удаления БД Сервиса Обработки Операций)
Disconnect-SignOperationStore -DisplayName $ss_name -DeleteDB
3. Удаление экземпляров сервисов и БД.
#Удаление экземпляра Центра Идентификации (с опциональным флагом DeleteDB для удаления БД)
Remove-IdsInstance -DisplayName $idp_name -DeleteDB
#Удаление экземпляра Сервиса Подписи (с опциональным флагом DeleteDB для удаления БД)
Remove-SignInstance -DisplayName $ss_name -DeleteDB
#Удаление экземпляра Веб-интерфейса
Remove-FeInstance -DisplayName $fe_name
#Удаление экземпляра Сервиса Аудита (с опциональным флагом DeleteDB для удаления БД)
Remove-AuditInstance -DisplayName $audit_name -DeleteDB
#Удаление экземпляра Сервиса Обработки Документов (с опциональным флагом DeleteDB для удаления БД)
Remove-DsInstance -DisplayName $ds_name -DeleteDB
#Удаление экземпляров Сервиса Взаимодействия с SDK
Remove-MdagInstance -DisplayName $mdag_name
Remove-MdagInstance -DisplayName $mdag_name_2
#Удаление экземпляра Сервиса Ключ Lite
Remove-LiteInstance -DisplayName $lite_name
#Удаление модулей Сервиса PUSH-уведомлений
Remove-PushModule -ModuleName $pp_module
Remove-PushModule -ModuleName $pp_module_mydss20
#Удаление экземпляра Сервиса PUSH-уведомлений
Uninstall-PushInstance
Примечание
В случае необходимости полного удаления КриптоПро Ключ необходимо также удалить соответствующие пакеты.