Набор командлетов для разворачивания DSS
Данный раздел содержит набор командлетов, достаточный для полноценной настройки КриптоПро DSS в части основных функций. Дополнительно представлены командлеты для разворачивания второго и последующих серверов кластера, если требуется использовать КриптоПро DSS в кластере.
Скачать представленные команды одним файлом
Внимание!
Не исполняйте загруженный файл! Необходимые переменные и командлеты рекомендуется копировать из него в консоль PowerShell, запущенную на сервере, где производится разворачивание DSS, от имени администратора. При необходимости выбранные наборы команд можно преобразовывать в файлы *.ps1.
Предварительные условия
- Установленный SQL-Server;
- Установленная роль Сервер приложений (IIS)
- Настроенная привязка https на Сервере приложений (IIS)
- Установленный КриптоПро DSS и дополнительное ПО (включая автоматическую установку с диска Microsoft .NET Framework версии 4.6.1 и PowerShell версии 3.0).
- Установленный КриптоПро .NET.
- Установленный ПАКМ «КриптоПро HSM».
Подробнее о порядке разворачивания DSS
Переменные
# Отпечатки сервисных сертификатов, допустимы RSA и ГОСТ
# Сервис Подписи
$ssthumbprint = ""
# Центр Идентификации
$idpthumbprint = ""
# Веб-интерфейс Пользователя
$fethumbprint = ""
# Сервис Аудита
$asThumb = ""
# Сервис Обработки Документов
$dsthumbrint = ""
# Имена экземпляров сервисов
# Сервис Подписи
$DisplayNamess = "helloss"
# Центр Идентификации
$DisplayNameidp = "hellosts"
# Веб-интерфейс Пользователя
$DisplayName = "hello"
# Сервис Аудита
$ASAppName = 'helloaudit'
# Сервис Обработки Документов (Заполняется опционально, при использовании API V2)
$DisplayNameDS = "hellods"
# Сервис взаимодействия с DSS SDK (mDAG) (Заполняется опционально, при использовании API V2)
$DisplayNameMD ="hellomdag"
# Имена пулов приложений
$ApplicationNamess = $DisplayNamess
$ApplicationName = $DisplayName
$ApplicationNameidp = $DisplayNameidp
$ApplicationNameMD = $DisplayNameMD
$ApplicationNameDS = $DisplayNameDS
# Имена БД (использованы рекомендуемые префиксы)
$SSdb = "SignatureServerDB" + "$DisplayName"
$STSdb = "IdentityServiceDB" + "$DisplayName"
$DSdb = "DocumentStoreDB" + "$DisplayName"
$OPdb = "OperationsDB" + "$DisplayName"
$ASdb = "AnalyticsServiceDB" +"$ASAppName"
Подключение к базе данных
КриптоПро DSS позволяет использовать БД с различными типами аутентификации и расположенные как на одном сервере с экземплярами компонентов (т.н. "локальные"), так и на удаленном сервере. Для подключения экземпляров сервисов DSS к БД необходимо зарегистрировать соответствующие строки подключения при помощи командлетов администрирования.
Примечание
Используйте только необходимый блок переменных и соответствующий блок командлетов для настройки подключения к БД.
# Выберите один из блоков ниже в зависимости от того, какой тип подключения требуется настроить
#
# БД на удаленном сервере с Windows-аутентификацией
$SQLServerName = "dssdb"
$SQLServiceAccountName = "DSS\DssService"
$SQLServiceAccountPassword = ""
#
# БД на удаленном сервере с SQL-аутентификацией
$SQLServerName = "dssdb"
$SQLServiceAccountName = "DSS\DssService"
$SQLServiceAccountPassword = ""
$AsUser =""
$AsUserPassword= ""
#
# Локальная БД
$SQLServerName = ""
#
# DNS
$SiteName = "Default Web Site"
$DNSName = ""
# Cтроки для подключения к БД для всех сервисов. Необходимо выбрать только один блок команд.
#
# Подключение удаленной БД с Windows-аутентификацией
# connection_string to SignServer database
$connInfoSS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$SSdb" -AccountType Windows -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword
# connection_string to STS database
$connInfoSTS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$STSdb" -AccountType Windows -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword
# connection_string to AnalyticsService database
$connInfoAS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$Asdb" -AccountType Windows -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword
# connection_string to DocumentStore database
$connInfoDS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$DSdb" -AccountType Windows -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword
# connection_string to Operations database for SignServer
$connInfoOS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$OPdb" -AccountType Windows -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword
#
# Подключение удаленной БД с SQL-аутентификацией
# connection_string to SignServer database
$connInfoSS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$SSdb" -AccountType SQL -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword -AsUser $AsUser -AsUserPassword $AsUserPassword
# connection_string to STS database
$connInfoSTS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$STSdb" -AccountType SQL -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword -AsUser $AsUser -AsUserPassword $AsUserPassword
# connection_string to AnalyticsService database
$connInfoAS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$Asdb" -AccountType SQL -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword -AsUser $AsUser -AsUserPassword $AsUserPassword
# connection_string to DocumentStore database
$connInfoDS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$DSdb" -AccountType SQL -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword -AsUser $AsUser -AsUserPassword $AsUserPassword
# connection_string to Operations database for SignServer
$connInfoOS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$OPdb" -AccountType SQL -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword -AsUser $AsUser -AsUserPassword $AsUserPassword
Экземпляры
Центр Идентификации
# Создание экземпляра Центра Идентификации
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/sts/scenario.html
# Создание экземпляра (выберите один из двух вариантов)
# Если используется БД на удаленном сервере
New-DssStsInstance -DisplayName $DisplayNameidp -ApplicationName $ApplicationNameidp -SiteName "$SiteName" -ConnectionInfo $connInfoSTS
# Если используется локальная БД
New-DssStsInstance -DisplayName $DisplayNameidp -ApplicationName $ApplicationNameidp -SiteName "$SiteName" -DBName $STSdb -SQLServerName "$SQLServerName"
# Добавление внешнего центра идентификации (в тестовом режиме)
# Set-DssIdentityProvider -DisplayName $DisplayNameidp -IssuerName realsts -Thumbprint $idpthumbprint -Title "realsts"
# Добавление отпечатка сервисного сертификата Центра Идентификации
Set-DssStsProperties -DisplayName $DisplayNameidp –ServiceCertificate $idpthumbprint
# Регистрация Oauth-клиента
Add-DssDefaultClient -DisplayName $DisplayNameidp –PassThru -Identifier client$DisplayName
# Настройка обработчика УЦ для аутентификации пользователей
# Подробнее: https://dss.cryptopro.ru/docs/CAIntegration/setenrolls/umsenroll.html
$CAServiceUrlAutchCA =""
$EnrollNameAutchCA =""
$OperatorCertThumbprintAutchCA =""
$FolderIDAutchCA = ""
$TemplateOIDAutchCA = ""
Add-DssStsCryptoProCA20Enrollment -DisplayName $DisplayName -CAServiceUrl "$CAServiceUrlAutchCA" -EnrollName "$EnrollNameAutchCA" -OperatorCertThumbprint "$OperatorCertThumbprintAutchCA" -FolderID "$FolderIDAutchCA" -TemplateOID "$TemplateOIDAutchCA"
# Добавление Оператора DSS
Add-DssIdentityOperator -DisplayName $DisplayNameidp -Login test_oper -Name test_oper –IssuerName realsts -Type Operator -Certificate <путь к файлу сертификата>
# На этом порту IIS должен быть ГОСТ сертфикат
Set-DssStsProperties -DisplayName $DisplayNameidp -SslAuthPort <порт> -SslAuthHostName "$DNSName"
# Необходимо добавить корневой и промежуточный сертификаты в хранилище сертфикатов Client Authentication Issuers
# Настройка ИНН юридического лица (INNLE)
# Подробнее: https://support.cryptopro.ru/index.php?/Knowledgebase/Article/View/368/1/registrcija-126431004-innle-v-kriptopro-dss
Add-DssRdn -DisplayName $DisplayNameidp -Oid 1.2.643.100.4 -StringIdentifier INNLE -FriendlyName "ИНН юридического лица"
Add-DssRdnPolicy -DisplayName $DisplayNameidp -Identifier (Get-DssRdn -DisplayName $DisplayNameidp |where {$_.StringIdentifier -eq "INNLE"}).id
# Регистрация компонента имени для политики имен группы пользователей ЦИ
Get-DssIdentityGroup -DisplayName $DisplayNameidp | foreach { Add-DssRdnPolicy -DisplayName $DisplayNameidp -Identifier (Get-DssRdn -DisplayName $DisplayNameidp|where {$_.StringIdentifier -eq "INNLE"}).id -GroupId $_.ID}
# При необходимости, если длина RDN слишком большая
# get-DssRdn -DisplayName $DisplayNameidp
# Находим нужный RDN и выполняем set-DssRdn -DisplayName $DisplayNameidp -MaxLength 64 -Id <Значение из GET>
# Если Оператор DSS для аутентификации использует сертификат ГОСТ Р 34.10-2012, в то время как веб-сервер использует на 443 порту сертификат RSA,
# необходимо создать привязку сертификата веб-сервера ГОСТ на выделенном порту.
# Не забудьте добавить лицензию на компоненты ЦИ!
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/setting/license/sts.html
Сервис Подписи
# Создание экземпляра Сервиса Подписи
# Подробнее: http://dss.cryptopro.ru/docs/adminguide/SignServer/scenario.html
# Создание экземпляра (выберите один из двух вариантов)
# Если используется БД на удаленном сервере
New-DssSignServerInstance -DisplayName $DisplayNamess -ApplicationName $ApplicationNamess -SiteName "$SiteName" -ConnectionInfo $connInfoSS
# Если используется локальная БД
New-DssSignServerInstance -DisplayName $DisplayNamess -ApplicationName $ApplicationNamess -SiteName "$SiteName" -DBName $SSdb -SQLServerName "$SQLServerName"
# Ввод отпечатка сервисного сертификата
Set-DSSProperties -DisplayName $DisplayNamess -ServiceCertificateThumbprint $ssthumbprint
# Настройка отношений доверия с Центром Идентификации
Add-DSSClaimsProviderTrust -DisplayName $DisplayNamess -IssuerName realsts -Thumbprint $idpthumbprint
# Настройка криптопровайдеров GostWithMasterKey - можно указать собственные значения, например, для HSM это $ProviderType = "80" и $ProviderName = "Crypto-Pro GOST R 34.10-2012 HSM Svc CSP"
$ProviderType = "80"
$ProviderName = "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider"
# Добавление криптопровайдера Сервиса Подписи
$idprovSS = (Add-DSSCryptoProvider -DisplayName $DisplayNamess -TypeId GostWithMasterKey -ProviderType $ProviderType -ProviderName "$ProviderName" ).Id
# Если необходимо скопировать провайдер в конфигурации с двумя одновременно подключенными HSM:
# Copy-DssCryptoProvider -DisplayName $DisplayNamess -NewProvName "<имя для нового провайдера>" -ID $idprovSS.Guid
# Добавление криптопровайдера для DSS Lite
# Add-DSSCryptoProvider -DisplayName $DisplayNamess -TypeId Lite -ProviderType $ProviderType -ProviderName "$ProviderName"
# Переключение Сервиса Подписи в режим работы Client (для использования DSS Lite)
# Set-DssProperties -DisplayName $DisplayNamess -ServiceType Client
# Ввод лицензии на Сервис Подписи (см. бланк лицензии)
# Подробнее о лицензировании Сервиса Подписи: https://dss.cryptopro.ru/docs/adminguide/setting/license/signserver.html
# Серийный номер
$SerialNumberSignServerLicense =""
# Имя компании
$CompanyNameSignServerLicense = ""
Add-DssLicense -DisplayName $DisplayNamess -SerialNumber $SerialNumberSignServerLicense -CompanyName $CompanyNameSignServerLicense
# Ввод демонстрационной лицензии на Сервис Подписи
# Add-DssLicense
# Настройка обработчиков запросов на сертификат (только для работы в тестовом режиме)
# Подробнее: http://dss.cryptopro.ru/docs/CAIntegration/intro.html
#
# Пример настройки обработчика КриптоПро УЦ 2.0
$UCName= 'Тестовый подчиненый УЦ ООО "Крипто-Про"'
$CAServiceUrl= "https://FlashUC/RA/RegAuthLegacyService.svc"
$OperatorCertThumbprint = "1e7665bdf32d0eab35e4edce2e723e061d00c3f1"
$FolderID ="91e5449c-84cd-4b6d-900c-ad3d0060b3ca"
$AuthorityName ='FlashUC'
Add-DssEnrollment -DisplayName $DisplayNamess -Type CryptoProCA20 -EnrollDisplayName "$UCName" -CAServiceUrl "$CAServiceUrl" -OperatorCertThumbprint "$OperatorCertThumbprint" -FolderID "$FolderID" -AuthorityName "$AuthorityName"
#
# Пример настройки обработчика стороннего УЦ
$CAName ="OutOfBand"
$locrdn="E:\UC OutOfBand\" #Путь к папке с настройками различительного имени пользователя и шаблонов сертификатов
Add-DssEnrollment -Displayname $DisplayNamess –Type EnrollOutOfBand –EnrollDisplayName $CAName –RdnConfig "$locrdn\rdn.config" -TemplatesConfig "$locrdn\templates.config"
# Добавление TSP-службы
Add-DssTspService -DisplayName $DisplayNamess -Name "testtsp" -Title "Тестовая TSP служба " -Url "http://flashuc/tsp/tsp.srf"
Веб-интерфейс Пользователя
# Создание экземпляра Веб-интерфейса Пользователя
# Подробнее: http://dss.cryptopro.ru/docs/adminguide/Frontend/scenario.html
# Создание экземпляра
New-DssFEInstance -DisplayName $DisplayName -ApplicationName $ApplicationName -SiteName "Default Web Site"
# Добавление отпечатка сертификата Веб-интерфейса Пользователя + Настройка адресов Сервиса Подписи и Центра Идентификации
Set-DssFEProperties -DisplayName $DisplayName -ServiceCertificate $fethumbprint -SignServerAddress "https://$DNSName/$DisplayNamess" -StsAddress "https://$DNSName/$ApplicationNameidp" -AnalyticsServiceAddress "https://$DNSName/$ASAppName"
# Регистрация на Веб-интерфейсе Пользователя Центра Идентификации в качестве доверенного издателя маркеров безопасности:
Add-DssFEClaimsProviderTrust -DisplayName $DisplayName -IssuerName realsts -Thumbprint $idpthumbprint
#Настройка на Центре Идентификации доступа по OpenID Connect
Add-DssClient -DisplayName $DisplayNameidp -Identifier сryptopro.dss.frontend.$DisplayName -Name сryptopro.dss.frontend.$DisplayName -SecretLifetime 0 -GenerateSecret
$Secret =(get-DssClientSecret -DisplayName $DisplayNameidp -ClientId сryptopro.dss.frontend.$DisplayName).Value
set-DssClient -DisplayName $DisplayNameidp -AllowedFlow ClientCredentials, AuthorizationCode, TokenExchange -RedirectUri "https://$DNSName/$DisplayName/Admins/Users/ExternalCallback", "https://$DNSName/$DisplayName/Users/ExternalCallback" -ClientId сryptopro.dss.frontend.$DisplayName
# Настройка на Веб-интерфейсе доступа по OpenID Connect
Set-DssFeOidcSettings -DisplayName $DisplayName -Issuer "https://$DNSName/$ApplicationNameidp" -Realm "https://$DNSName/$DisplayName" -ClientId сryptopro.dss.frontend.$DisplayName -ClientSecret $Secret
Сервис Аудита
# Создание экземпляра Сервиса Аудита
# Подробнее: http://dss.cryptopro.ru/docs/adminguide/Frontend/scenario.html
# Создание экземпляра (выберите один из двух вариантов)
# Если используется БД на удаленном сервере
New-DSSAnalyticsServiceInstance -SiteName "$SiteName" -ApplicationName $ASAppName -DisplayName $ASAppName -ConnectionInfo $connInfoAS
# Если используется локальная БД
New-DSSAnalyticsServiceInstance -SiteName "$SiteName" -ApplicationName $ASAppName -DisplayName $ASAppName -DBName $Asdb -SQLServerName "$SQLServerName"
# Добавление отпечатка сервисного сертификата Сервиса Аудита + Настройка конечной точки Сервиса Аудита для отображения записей аудита на веб-интерфейсе
Set-DssAnalyticsServiceProperties -DisplayName $ASAppName -ServiceCertificate $asThumb -AnalyticsServiceUri "https://$DNSName/$ASAppName/AnalyticsService.svc/issuedtoken/transport/nosc"
# Регистрация на Сервисе Аудита Центра Идентификации в качестве доверенного издателя маркеров безопасности
Add-DssAnalyticsClaimsProviderTrust -DisplayName $ASAppName -IssuerName realsts -Thumbprint $idpthumbprint
# Настройка URL-адресов для доступа Пользователей и Операторов СЭП
Set-DssAnalyticsWSFederationSettings -DisplayName $ASAppName -Issuer "https://$DNSName/$DisplayNameidp/sts/issue/" -Realm "https://$DNSName/$ASAppName/Audit" -homerealm "" -requirehttps 0
# Настройка аудита Сервиса Подписи
New-DssSignServerAudit -DisplayName $DisplayNamess -UseRestApi 1 -AuditServiceAddress http://$DNSName/$ASAppName/api/writer
# Настройка аудита Центра Идентификации
New-DssStsAudit -DisplayName $DisplayNameidp -UseRestApi 1 -AuditServiceAddress http://$DNSName/$ASAppName/api/writer
# Настройка адреса ЦИ, куда Сервис Аудита обращается для аутентификации
Set-DssAnalyticsServiceProperties -DisplayName "$ASAppName" -StsAddress "https://$DNSName/$ApplicationNameidp/Active.svc/service"
# НАСТРОЙКА ОТОБРАЖЕНИЯ ПУНКТА МЕНЮ "АУДИТ"
# На Центре Идентификации
Set-DssStsProperties -DisplayName $DisplayNameidp -AnalyticsServiceAddress "https://$DNSName/$ASAppName/analyticsservice.svc/issuedtoken/transport/nosc"
# На Веб-интерфейсе Пользователя
Set-DssFEProperties –DisplayName $DisplayName –AnalyticsServiceAddress https://$DNSName/$ASAppName
# Добавляем ссылку для RelyingParty
$ASMetadataUrl = "http://$DNSName/$ASAppName/FederationMetadata/2007-06/FederationMetadata.xml"
#Отчеты аудита
#Подробнее: https://dss.cryptopro.ru/docs/adminguide/Analytics/plugins.html
$AuditConnectionString = Get-DssAnalyticsRegistryProperties -DisplayName $ASAppName
$SignServer = "1/$DisplayNamess"
$StsConnectionString = Get-DssStsRegistryProperties -DisplayName $DisplayNameidp
$STS = "1/$DisplayNameidp"
Add-DssAnalyticsReportPlugin -DisplayName $ASAppName -FileExtension ccr -Assembly CryptoPro.DSS.AnalyticsService.ReportPlugins.dll -Classname CryptoPro.DSS.AnalyticsService.ReportPlugins.CertificateReports.CreatedCertificateReport -Parameters @{"AuditConnectionString" = "$AuditConnectionString"; "InstanceName"="$SignServer"; "ReportName"="Количество созданных сертификатов"}
Add-DssAnalyticsReportPlugin -DisplayName $ASAppName -FileExtension csr -Assembly CryptoPro.DSS.AnalyticsService.ReportPlugins.dll -Classname CryptoPro.DSS.AnalyticsService.ReportPlugins.SignatureReports.CreatedSignaturesReport -Parameters @{"AuditConnectionString" = "$AuditConnectionString"; "StsConnectionString" = "$StsConnectionString"; "InstanceName"="$SignServer"; "ReportName"="Количество созданных подписей"}
Add-DssAnalyticsReportPlugin -DisplayName $ASAppName -FileExtension cur -Assembly CryptoPro.DSS.AnalyticsService.ReportPlugins.dll -Classname CryptoPro.DSS.AnalyticsService.ReportPlugins.UserReports.CreatedUsersReport -Parameters @{"StsConnectionString" = "$StsConnectionString"; "ReportName"="Количество созданных пользователей"; "RealmName"="realsts";"RdnList"="CN"}
Add-DssAnalyticsReportPlugin -DisplayName $ASAppName -FileExtension mur -Assembly CryptoPro.DSS.AnalyticsService.ReportPlugins.dll -Classname CryptoPro.DSS.AnalyticsService.ReportPlugins.MyDss.MyDssUserReport -Parameters @{"AuditConnectionString" = "$AuditConnectionString"; "InstanceName"="$STS"; "ReportName"="Отчет о пользователях MyDss"}
Add-DssAnalyticsReportPlugin -DisplayName $ASAppName -FileExtension clur -Assembly CryptoPro.DSS.AnalyticsService.ReportPlugins.dll -Classname CryptoPro.DSS.AnalyticsService.ReportPlugins.CloudCspReport.CloudCspReport -Parameters @{"AuditConnectionString" = "$AuditConnectionString"; "InstanceName"="$STS"; "ReportName"="Отчет о пользователях Cloud CSP"}
Add-DssAnalyticsReportPlugin -DisplayName $ASAppName -FileExtension ure -Assembly "CryptoPro.DSS.AnalyticsService.ReportPlugins.dll" -Classname "CryptoPro.DSS.AnalyticsService.ReportPlugins.UserReports.UserReportExtended" -Parameters @{"AuditConnectionString" = "$AuditConnectionString"; "InstanceName"="1/$DisplayNameidp"; "ReportName"="Расширенный отчёт о пользователях";}
Add-DssAnalyticsReportPlugin -DisplayName $ASAppName -FileExtension cre -Assembly "CryptoPro.DSS.AnalyticsService.ReportPlugins.dll" -Classname "CryptoPro.DSS.AnalyticsService.ReportPlugins.CertificateReports.CertificateReportExtended" -Parameters @{"AuditConnectionString" = "$AuditConnectionString"; "InstanceName"="1/$DisplayNamess"; "ReportName"="Расширенный отчёт о сертификатах";}
Add-DssAnalyticsReportPlugin -DisplayName $ASAppName -FileExtension gdr -Assembly CryptoPro.DSS.Analytics.ReportPlugins.dll -Classname CryptoPro.DSS.Analytics.ReportPlugins.Reports.GenericReport -Parameters @{"AuditConnectionString"="$AuditConnectionString";"InstanceName"="$STS";"SsInstanceName"="$SignServer"}
Доверие компонентов
Настройки отношений доверия
# Настройка отношений доверия
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/sts/relyingparty.html
Add-DssRelyingPartyTrust -DisplayName $DisplayNameidp -Name "Frontend" -Description "Frontend" -MetadataUri "https://$DNSName/$ApplicationName/FederationMetadata/2007-06/FederationMetadata.xml"
Add-DssRelyingPartyTrust -DisplayName $DisplayNameidp -Name "SignServer" -MetadataUri "http://$DNSName/$ApplicationNamess/FederationMetadata/2007-06/FederationMetadata.xml"
Add-DssRelyingPartyTrust -DisplayName $DisplayNameidp -Name "AnalyticsService" -MetadataUri $ASMetadataUrl
# Внимание! Необходимо выдать права на доступ к закрытому ключу пулам приложений экземпляров сервисов
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/servicecertificates/privatekeyaccess.html
# Перезапуск пулов приложений
Restart-WebAppPool Cryptoprodss-1-$ASAppName
Restart-WebAppPool Cryptoprodss-1-$DisplayNameidp
Restart-WebAppPool Cryptoprodss-1-$DisplayName
Restart-WebAppPool Cryptoprodss-1-$DisplayNamess
Устранение неполадок
# Из-за особенностей работы IIS может возникать следующая ошибка:
# В параметры -BackChannelUrl и -Identities в настройках Сервиса Подписи в качестве доверенной стороны попадают неверные значения
# Задание идентификатора Сервиса Подписи как доверенной стороны (получить идентификатор нужной доверенной стороны можно при помощи командлета Get-DssRelyingPartyTrust)
Get-DssRelyingPartyTrust -DisplayName $displaynameidp
$id ="3"
# Исправление параметров
Set-DssRelyingPartyTrust -DisplayName $DisplayNameidp -Id $id -BackChannelUrl "https://$DNSName/$DisplayNamess/SignService.svc/transactiontokens"
Set-DssRelyingPartyTrust -DisplayName $DisplayNameidp -Id $id -Identities "https://$DNSName/$DisplayNamess/SignService.svc/transactiontokens","https://$DNSName/$DisplayNamess/rest","https://$DNSName/$DisplayNamess/rest/api","urn:cryptopro:dss:signserver:$DisplayNamess"
# Проверяем
Get-DssRelyingPartyTrust -DisplayName $displaynameidp
# Перезапуск экземпляров компонентов
Restart-DssStsInstance -DisplayName $displaynameidp
Оповещение
В данном примере приведена минимально необходимая настройка оповещения пользователей посредством SMS- и Email-сообщений. При этом настройки политик оповещения и шаблонов сообщений остаются по умолчанию.
Подробнее о системе оповещения DSS
Общие настройки
# Настройка системы оповещения
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/notification/intro.html
#
# Центр Идентификации
# Регистрация транспортного плагина
$Notify = (Add-DssStsPlugin -DisplayName $DisplayNameidp -PluginTypeName "DSS.Notification.Transport.NotificationTransportPlugin,DSS.Notification.Transport" -PluginType NotificationService -Settings @{ServiceAddress="https://$DNSName/$DisplayNameidp/"}).ID
# Регистрация модуля рассылки уведомлений
Add-DssStsNotifier -TransportPluginID $Notify -DisplayName $DisplayNameidp -NotifierType NotificationService
#
# Сервис Подписи
# Регистрация транспортного плагина
$NotifySS = (Add-DssSignServerPlugin -Displayname $DisplayNamess -PluginTypeName "DSS.Notification.Transport.NotificationTransportPlugin,DSS.Notification.Transport" -PluginType NotificationService -Settings @{ServiceAddress="https://$DNSName/$DisplayNameidp/"}).ID
# Регистрация модуля рассылки уведомлений
Add-DssSignServerNotifier -TransportPluginID $NotifySS -NotifierType NotificationService -Displayname $DisplayNamess
Оповещение по Email
# Настройка оповещения по электронной почте
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/notification/Email.html
$Hostemail ="192.168.68.222"
$Port ="25"
$FromAddress ="noreply@cryptopro.ru"
$TransportPIDFSMS= (Add-DssStsPlugin -DisplayName $DisplayNameidp -PluginTypeName “CryptoPro.DSS.EmailService.SmtpPlugin.SmtpPlugin,DSS.EmailService.SmtpPlugin” -PluginType Email –Settings @{“Host”=”$Hostemail”; “Port”=”$Port”; “FromAddress”=”$FromAddress”; “RequireSsl”=”true” }).ID
$FormaterPIDFSMS= (Add-DssStsPlugin -DisplayName $DisplayNameidp -PluginTypeName “CryptoPro.DSS.MessageFormatter.EmailFormatter,DSS.MessageFormatter” -PluginType Formatter –Settings @{}).ID
Add-DssInternalNotifier -DisplayName $DisplayNameidp -TransportPluginID $TransportPIDFSMS -FormatterPluginID $FormaterPIDFSMS -NotifierType Email
Оповещение по SMS
# Настройка имитации рассылки SMS-сообщений без использования SMS-шлюза (FakeSMS)
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/notification/Sms.html
New-Item -Path "C:\inetpub\wwwroot\fakesms_$Displayname" -ItemType Directory
Set-DssConfirmationPolicy -DisplayName $Displaynameidp -AllOpcActions -AllowOverride $true
Set-DssStsProperties -DisplayName $Displaynameidp -AllowUserRegistration $true -PhoneConfirmation $true
Enable-DssAuthenticationMethod -DisplayName $Displaynameidp -Uri http://dss.cryptopro.ru/identity/authenticationmethod/otpviasms
$SMSBaseDir = "C:\inetpub\wwwroot\fakesms_$Displayname"
$TransportPIDFSMS= (Add-DSSSTSPlugin -DisplayName $Displaynameidp -PluginTypeName "CryptoPro.DSS.SmsService.StubPlugin.SmsStub,DSS.SmsService.StubPlugin" -PluginType SMS -Settings @{"WorkingDirectory" = $SMSBaseDir}).ID
$FormaterPIDFSMS= (Add-DSSSTSPlugin -DisplayName $Displaynameidp -PluginTypeName "CryptoPro.DSS.MessageFormatter.SMSFormatter,DSS.MessageFormatter" -PluginType Formatter -Settings @{Header="Крипто-Про DSS."}).ID
Add-DssInternalNotifier -DisplayName $DisplayNameidp -TransportPluginID $TransportPIDFSMS -FormatterPluginID $FormaterPIDFSMS -NotifierType SMS
# Включение просмотра каталога с "SMS-сообщениями":
Set-WebConfigurationProperty -filter /system.webServer/directoryBrowse -name enabled -Value true -PSPath "IIS:\Sites\Default Web Site\fakesms_$Displayname"
# Предоставление прав учетным записям пулов приложений Центра Идентификации и Сервиса Подписи на каталог с "SMS-сообщениями", а также дочерние каталоги и файлы:
icacls "C:\inetpub\wwwroot\fakesms_$Displayname" /grant "IIS AppPool\CryptoProDSS-1-$DisplayNameidp"":(CI)(OI)F"
icacls "C:\inetpub\wwwroot\fakesms_$Displayname" /grant "IIS AppPool\CryptoProDSS-1-$DisplayNamess"":(CI)(OI)F"
myDSS (APIv1)
# Развертывание myDSS (API v1)
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/mydss/intro.html
# Объявление переменных
$MydssInternalbd = "MydssInternalbd$DisplayName"
$MydssExternalbd = "MydssExternalbd$DisplayName"
$InternalInstance= "MyDssServerInternal$DisplayName"
$ExternalInstance = "MyDssServerExternal$DisplayName"
#
# Пароль клиентского сертификата APN (Apple)
$ApnClientCertPassword =""
# Путь к клиентскому сертификату APN (Apple)
$ApnClientCertPath = "<путь>"
# Ключ для PUSH-уведомлений Google
$GoogleServerKey = ""
#
# Задание имен DNS для серверов, на которых расположены компоненты MyDssServerInternalInstance и MyDssServerExternalInstance
# Внимание! Экземпляры компонентов могут находиться на разных серверах
$DNSInternal="localhost"
$DNSExternal="fastdss"
# Подключение к БД на удаленном сервере с Windows-аутентификацией
$connInfoMYDSSInternal = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName $MydssInternalbd -AccountType Windows -ServiceAccountName $ServiceAccountName -ServiceAccountPassword $ServiceAccountPassword
$connInfoMYDSSExternal = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName $MydssExternalbd -AccountType Windows -ServiceAccountName $ServiceAccountName -ServiceAccountPassword $ServiceAccountPassword
# Подключение к БД на удаленном сервере с SQL-аутентификацией
$connInfoMYDSSInternal = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName $MydssInternalbd -AsUser $AsUser -AsUserPassword $AsUserPassword -AccountType SQL -ServiceAccountName $ServiceAccountName -ServiceAccountPassword $ServiceAccountPassword
$connInfoMYDSSExternal = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName $MydssExternalbd -AsUser $AsUser -AsUserPassword $AsUserPassword -AccountType SQL -ServiceAccountName $ServiceAccountName -ServiceAccountPassword $ServiceAccountPassword
# Создание экземпляров MyDssServerInternal + MyDssServerExternal
#
# Для БД, расположенной на удаленном сервере
# Создание экземпляра Сервиса взаимодействия с ЦИ
New-MyDssServerInternalInstance -SiteName "$SiteName" -DisplayName $InternalInstance -ApplicationName "$InternalInstance" -ConnectionInfo $connInfoMYDSSInternal
# Создание экземпляра Сервиса взаимодействия с мобильным приложением myDSS
New-MyDssServerExternalInstance -SiteName "$SiteName" -DisplayName $ExternalInstance -ApplicationName "$ExternalInstance" -ConnectionInfo $connInfoMYDSSExternal
#
# Для локальной БД
# Создание экземпляра Сервиса взаимодействия с ЦИ
New-MyDssServerInternalInstance -SiteName "$SiteName" -DisplayName $InternalInstance -ApplicationName "$InternalInstance" -DBName $MydssInternalbd -SQLServerName "$SQLServerName"
# Создание экземпляра Сервиса взаимодействия с мобильным приложением myDSS
New-MyDssServerExternalInstance -SiteName "$SiteName" -DisplayName $ExternalInstance -ApplicationName "$ExternalInstance" -DBName $MydssExternalbd -SQLServerName "$SQLServerName"
# Настройка криптопровайдера (GostWithMasterKey)
$ProviderType = "80"
$ProviderName = "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider"
# Добавление криптопровайдера
Add-MyDssServerInternalCryptoProviders -DisplayName $InternalInstance -TypeId GostWithMasterKey -ProviderType $ProviderType -ProviderName $ProviderName
# Задание адреса сервиса рассылки PUSH-уведомлений
Set-MyDssServerInternalProperties -DisplayName $InternalInstance -InteractionPushServiceAddress "http://$DNSExternal/$ExternalInstance/InteractionPushService.svc"
# Задание адреса Сервиса взаимодействия с мобильным приложением myDSS
Set-MyDssServerInternalProperties -DisplayName $InternalInstance -InteractionServiceAddress "http://$DNSExternal/$ExternalInstance/InteractionService.svc"
# Настройка Сервиса взаимодействия с мобильным приложением myDSS (этот блок команд может быть использован для подключения Центра Идентификации к ранее созданным компонентам myDSS)
Set-MyDssInteractionServiceProperties -DisplayName $ExternalInstance -ServiceAddress "http://$DNSInternal/$InternalInstance/Service.svc"
# Настройка взаимодействия с серверами рассылки PUSH-уведомлений (Apple Push Notification Service и Firebase Cloud Messaging Server).
Set-MyDssPushServiceProperties -DisplayName $ExternalInstance -ApnClientCertPassword $ApnClientCertPassword -ApnClientCertPath $ApnClientCertPath -GoogleServerKey $GoogleServerKey
# Задание на ЦИ КриптоПро DSS адреса Сервиса взаимодействия с ЦИ и адреса ЦИ, куда возвращается результат подтверждения операций из мобильного приложения
Set-DssMobileAuthProperties -DisplayName "$DisplayNameidp" -ServiceAddress "http://$DNSInternal/$InternalInstance/service.svc" -CallbackUriPrefix "https://$DNSName$sslport/$DisplayNameidp"
# Включение метода аутентификации myDSS
Enable-DssAuthenticationMethod -DisplayName "$DisplayNameidp" –Uri http://dss.cryptopro.ru/identity/authenticationmethod/mobile
# В случае использования удаленной БД с Windows аутентификацией необходимо настроить запуск службы mydsssrv0 (КриптоПро myDSS (MyDssServerExternal)) от имени учетной записи, имеющей доступ к БД.
DSS SDK (APIv2)
Сервис Обработки Документов и плагины
# Создание и настройка экземпляра Сервиса Обработки Документов
#Подробнее: http://dss.cryptopro.ru/docs/adminguide/DocumentStore/scenario.html
#
# Создание экземпляра (выберите один из двух вариантов)
# Если используется БД на удаленном сервере
New-DssDocumentStoreInstance -DisplayName $DisplayNameDS -SiteName $SiteName -ApplicationName $DisplayNameDS -ConnectionInfo $connInfoDS
# Если используется локальная БД
New-DssDocumentStoreInstance -DisplayName $DisplayNameDS -SiteName $SiteName -ApplicationName $DisplayNameDS -DBName $DSdb -SQLServerName "$SQLServerName"
# Настройка сервисного сертификата и срока хранения долговременных документов
Set-DssDocumentStoreProperties -DisplayName $DisplayNameDS -ServiceCertificate $dsthumbrint
Set-DssDocumentStoreProperties -DocumentStorageTime 3
# Настройка адреса Сервиса Обработки Документов на Центре Идентификации:
Set-DssStsProperties -DisplayName $ApplicationNameidp -DocumentStoreAddress https://$DNSName/$ApplicationNameDS
# Настройка адреса Сервиса Обработки Документов на Веб-интерфейсе Пользователя
Set-DssFeProperties -DisplayName $ApplicationName -DocumentStoreAddress https://$DNSName/$ApplicationNameDS
# Настройка адреса Сервиса Обработки Документов на Сервисе Подписи:
Set-DssProperties -DisplayName $ApplicationNamess -DocumentStoreAddress https://$DNSName/$ApplicationNameDS
# Регистрация на СОД Центра Идентификации в качестве доверенного издателя маркеров безопасности:
Add-DssDocumentStoreClaimsProviderTrust -DisplayName $ApplicationNameDS -IssuerName realsts -Thumbprint $idpthumbprint
# Регистрация на СОД Сервиса Подписи в качестве доверенного издателя маркеров безопасности:
Add-DssDocumentStoreClaimsProviderTrust -DisplayName $ApplicationNameDS -IssuerName signserver -Thumbprint $ssthumbprint
# Настройка аудита Cервиса Обработки Документов
New-DssDocumentStoreAudit -DisplayName $ApplicationNameDS -AuditServiceAddress "https://$DNSName/$ASAppName/api/writer" -UseRestApi 1
# Добавление профиля подписи. Все документы будут подписаны подписью формата CAdES-BES.
Add-DssProcessingRule -DisplayName $ApplicationNamess -Format CAdES -DocumentsFormats * -Parameters @{ "CADESType"="BES"; "IsDetached"="true" }
$idProcessingTemplate = (get-DssProcessingRule -DisplayName $ApplicationNamess).id
New-DssProcessingTemplate -DisplayName $ApplicationNamess -ProcessingRulesIds $idProcessingTemplate -Description "Подпись CAdES BES"
# Включение режима асинхронной подписи(по умолчанию он отключен)
Enable-DssAsyncOperationSettings -DisplayName $ApplicationNamess
# Регистрация Сервиса Обработки Документов в качестве доверенной стороны на Центре Идентификации.
Add-DssRelyingPartyTrust -DisplayName $DisplayNameidp -Name DocumentStore -Identities urn:cryptopro:dss:documentstore:$DisplayNameDS
# Плагины отображения документов при помощи компонента Сервис Обработки Документов
# Зарегистрированы по умолчанию, подробнее:
# https://dss.cryptopro.ru/docs/adminguide/DocumentStore/documents.html
# Настройка плагина конвертации для отображаемых данных
Set-DssDocumentStoreConverterPlugin -DisplayName $DisplayNameDS -FileExtension preview_@default_html -Parameters @{ "snippetTemplate"='<html lang="ru"><head><meta charset="UTF-8"/><style>body{{font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; padding: 16pt;}} @media(prefers-color-scheme: dark){{body{{color: white;}}}}</style></head><body><p>Имя документа:</p><p>{0:Name}</p></body></html>' }
# Настройка описания операции, отображаемого в МП для операции подписи и/или пакетной подписи
$template2 = Get-DssFormatterTemplate -DisplayName $DisplayNameidp -EventTypes SecondaryAuthSign -Destination MyDssAuth
Set-DssFormatterTemplate -DisplayName $DisplayNameidp -TemplateID $template2.ID -Template '{{"values": {{"dss": "КриптоПро DSS","date": "{0:Date}","login": "{0:Login}","certid": "{0:CertificateID}" }},"keys":{{"dss": "Сервер ЭП","date": "Время","login": "Логин пользователя", "certid":"Идентификатор сертификата"}}}}'
$template2 = Get-DssFormatterTemplate -DisplayName $DisplayNameidp -EventTypes SecondaryAuthSignDocs -Destination MyDssAuth
Set-DssFormatterTemplate -DisplayName $DisplayNameidp -TemplateID $template2.ID -Template '{{"values": {{"dss": "КриптоПро DSS","date": "{0:Date}","login": "{0:Login}","certid": "{0:CertificateID}" }},"keys":{{"dss": "Сервер ЭП","date": "Время","login": "Логин пользователя", "certid":"Идентификатор сертификата"}}}}'
# Настройка шаблона отображаемых данных для подтверждения входа
$template = Get-DssMyDssFormatterTemplate -DisplayName $DisplayNameidp -EventTypes SecondaryAuthLogin
Set-DssMyDssFormatterTemplate -DisplayName $DisplayNameidp -TemplateID $template.ID -TemplateCaption '{{"values": {{"dss": "КриптоПро DSS","date": "{0:Date}","login": "{0:Login}"}},"keys": {{"dss": "Сервер ЭП","date": "Время","login": "Логин пользователя"}}}}' -TemplateSnippet '<html lang="ru"><head><meta charset="UTF-8"/><style>body{{font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; padding: 16pt;}} @media(prefers-color-scheme: dark){{body{{color: white;}}}}</style></head><body><p>Подтвердите вход пользователя.</p><p>Идентификатор сессии: <b>{0:SessionId}</b></p></body></html>'
Сервис Операций
# Создание и настройка экземпляра Сервиса Операций
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/OperationService/scenario.html?q=Connect-DssstsOperationStore
#
# Подключение БД Сервиса Операций. Необходимо выбрать только один блок команд.
#
# Подключение Сервиса Операций для удаленной БД
Connect-DssOperationStore -ConnectionInfo $connInfoOS -DisplayName $ApplicationNamess
Connect-DssStsOperationStore -ConnectionInfo $connInfoOS -DisplayName $ApplicationNameidp
#
# Подключение Сервиса Операций для локальной БД
Connect-DssstsOperationStore -SQLServerName "$SQLServerName" -DBName $OPdb -DisplayName $ApplicationNameidp
Connect-DssOperationStore -SQLServerName "$SQLServerName" -DBName $OPdb -DisplayName $ApplicationNamess
# Настройка мониторинга очистки неактуальных операций (1 раз в сутки, в 1.00 AM)
$time = New-TimeSpan -Hours 01 -Minutes 0 -Seconds 0
# Настройка срока давности удаляемых операций (удаляются просроченные, выполненные и отклоненные операции, созданные более двух суток назад).
Set-DssStsOperationEraser -DisplayName $DisplayNameidp -Times $time –OperationLimitInMinutes 2880
# Включение мониторинга очистки
Enable-DssStsOperationEraser -DisplayName $DisplayNameidp
Сервис взаимодействия с DSS SDK (mDAG)
# Создание и настройка экземпляра Сервиса взаимодействия с DSS SDK (myDssApiGateway, mDAG)»
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/mDAG/scenario.html
# Внимание! Данный компонент необходимо располагать на выделенном сервере
$DNSNameMdag =$DNSName
# Создание нового экземпляра mDAG:
New-MdagInstance -SiteName "Default Web Site" -ApplicationName $DisplayNameMD -DisplayName $DisplayNameMD
# Интеграция с Центром Идентификации, Сервисом Подписи, Сервисом Аудита, Сервисом Обработки Документов (указывается $DNSName сервера, где располагаются данные компоненты)
Set-MdagProperties -DisplayName $ApplicationNameMD -IdpBaseAddress https://$DNSName/$ApplicationNameidp -SignServerBaseAddress https://$DNSName/$ApplicationNamess -DocumentStoreBaseAddress https://$DNSName/$ApplicationNameDS -AnalyticsBaseAddress "https://$DNSName/$ASAppName/"
# Настройка отношений доверия с Центром Идентификации(Выполняется на ЦИ)
Add-DssRelyingPartyTrust -DisplayName $DisplayNameidp -Name Mdag -Description "myDSS API Gateway" -Identities urn:cryptopro:dss:mdag:$DisplayNameMD
# Настройка криптопровайдеров
$ProviderType = "80"
$ProviderName = "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider"
# Регистрация профиля криптопровайдеров
$idprovsts=(Add-DssCryptoProviderProfile -DisplayName $ApplicationNameidp -Type MyDss -PrimaryProviderName "$ProviderName" -PrimaryProviderType $ProviderType -Exportable -Name "CryptoProfile for myDSS SDK").Id
# Копирование профиля (при необходимости)
# Copy-DssCryptoProviderProfile -DisplayName $ApplicationNameidp -NewProvName "Crypto-Pro GOST R 34.10-2012 HSM Svc CSPProxy HSM_Serv2" -ID $idprovsts.Guid
# Настройка взаимодействия mDAG с DSS SDK:
Set-DssMyDssProperties -DisplayName $DisplayNameidp -MyDssServiceUrl https://"$DNSNameMdag"/$DisplayNameMD -MyDssKeyProtectionType Strong -NonceVerificationRequired 0
# Включение возможности регистрации пользователей из мобильного приложения с требованием проверять уникальность отпечатка устройства пользователя
Set-DssMyDSSProperties -DisplayName $DisplayNameidp -MyDssSelfRegEnabled $true -DeviceFingerprintRequired $true
# Включение метода аутентификации:
Enable-DssAuthenticationMethod -DisplayName $ApplicationNameidp -Id 16
# Дополнительные настройки
#callback о завершении транзакции
$TransportPIDFSMS= (Add-DssStsPlugin -DisplayName $DisplayNameidp -PluginTypeName "CryptoPro.DSS.Identity.Authentication.Notification.HttpTransportPlugin,CryptoPro.DSS.Identity.Authentication.Notification" -PluginType AuthenticationResult -Settings @{} ).ID
#Настройка плагина форматирования
$FormaterPIDFSMS= (Add-DssStsPlugin -DisplayName $DisplayNameidp -PluginTypeName "CryptoPro.DSS.Identity.Authentication.Notification.AuthenticationResultFormatter,CryptoPro.DSS.Identity.Authentication.Notification" -PluginType Formatter -Settings @{} ).ID
#Добавление модуля оповещения
Add-DssStsNotifier -DisplayName $DisplayNameidp -TransportPluginID $TransportPIDFSMS -NotifierType AuthenticationResultCallback
#Настройка транспортного плагина и модуля оповещения для режима асинхронной подписи
$AuthNotifySS = Add-DssSignServerPlugin -Displayname $ApplicationNamess -PluginTypeName "CryptoPro.DSS.Identity.Authentication.Notification.HttpTransportPlugin,CryptoPro.DSS.Identity.Authentication.Notification" -PluginType AuthenticationResult -Settings @{}
Add-DssSignServerNotifier -Displayname $ApplicationNamess -TransportPluginID $AuthNotifySS.ID -NotifierType AuthenticationResultCallback -Settings @{} -Type "CryptoPro.DSS.Identity.Authentication.Notification.AuthenticationResultNotifier,CryptoPro.DSS.Identity.Authentication.Notification"
Мобильное приложение DSS Client
# Настройка Сервиса взаимодействия с DSS SDK для DSS Client и иных приложений на базе DSS SDK
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/mDAG/scenario.html
# Внимание! Для каждого приложения нужен отдельный mDAG + mydssSystem
# Например, если требуется использовать одновременно с одним сервером DSS мобильные приложения DSS Client и myDSS 2.0, необходимо создать и настроить собственный экземпляр mDAG для каждого приложения.
# Для этого необходимо предварительно задать новые зачения для переменных $ApplicationNameMD и $DisplayNameMD и выполните командлеты для создания mDAG
# Порт для взаимодействия мобильного приложения с mDAG
# Внимание! На указанном порту должен быть привязан сертификат, выданный аккредитованным УЦ. Подробнее: https://dss.cryptopro.ru/docs/adminguide/mDAG/scenario.html
$mdag_port="4432"
# Строка адреса mDAG для последующей настройки
$MyDssAddress = "https://"+ $DNSNameMdag + ":" + $mdag_port + "/" + $DisplayNameMD
# Рассылка PUSH-уведомлений с использованием PUSH Proxy
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/redist/pushproxy.html
# Имя модуля
$ModuleName =$DisplayName + "pushmodule_dssclient"
# Логин для аутентфикации
$AuthLogin = $DisplayName + "pushlogin_dssclient"
# Пароль для аутентфикации
$AuthPassword =$DisplayName + "pushpass_dssclient"
# Имя экземпяра
$InstanceName = "pushproxy"
# Ключ для PUSH-уведомлений Google
$dssclient_GoogleServiceKey= ""
# Данные для PUSH-уведомлений Apple
$pushproxy_P8PrivateKeyFile =""
$pushproxy_TeamId =""
$pushproxy_P8PrivateKeyId =""
$AppBundleIdentifier= ""
# Создание веб-приложения
Install-DssPushProxyInstance -InstanceName $InstanceName -SiteName "Default Web Site"
# Создание модуля
New-DssPushProxyModule -ModuleName $ModuleName -AuthLogin $AuthLogin -AuthPassword $AuthPassword
# Интеграция с APNS
Set-DssPushProxyApn -ModuleName $ModuleName -AppBundleIdentifier $AppBundleIdentifier -TeamId $pushproxy_TeamId -P8PrivateKeyId $pushproxy_P8PrivateKeyId -P8PrivateKeyFile $pushproxy_P8PrivateKeyFile
# Интеграция с FCM
Set-DssPushProxyFcm -ModuleName $ModuleName -GoogleServiceKey $dssclient_GoogleServiceKey
# Включение модуля APN
Enable-DssPushProxyApn -ModuleName $ModuleName
# Включение модуля FCM
Enable-DssPushProxyFcm -ModuleName $ModuleName
# Перезапуск экземпляра Центра Идентификации
Restart-DssStsInstance -DisplayName $ApplicationNameidp
# Регистрация плагина рассылки PUSH-уведомлений
$Global:systemID = (Add-MyDssSystem -DisplayName $DisplayNameidp -Name $DisplayName -MyDssAddress $MyDssAddress -PushType PushProxy -PushProxyLogin $AuthLogin -PushProxyPassword $AuthPassword -PushProxyAddress "http://$DNSName/$InstanceName/$ModuleName" ).ID
# Настройка Oauth-аутентификации для взаимодействия с mDAG
$client_mdag = (Get-DssClient -DisplayName $DisplayNameidp | where { $_.ExtendedProperties -ne $null -and $_.ExtendedProperties["MyDssSystemId"] -eq $systemID}).ClientId
Set-DssClient -DisplayName $DisplayNameidp -ClientId $client_mdag -GenerateSecret
$secret_mdag = (Get-DssClientSecret -DisplayName $DisplayNameidp -ClientId $client_mdag).value
Set-MdagProperties -DisplayName $DisplayNameMD -ClientId $client_mdag -ClientSecret $secret_mdag
#Настройка шаблонов Push-уведомлений
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 234 -MyDssSystemId $systemID -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}"}'
## 1.3. Устройство заблоĸировано на сервере:
## myDssDeviceLocked = 320
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 320 -MyDssSystemId $systemID -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}"}'
## 1.4. Устройство разблоĸировано на сервере:
## myDssDeviceUnlocked = 321,
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 321 -MyDssSystemId $systemID -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}"}'
## 2.1. Сертифиĸат выпущен:
## CertificateInstalled = 58
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 58 -MyDssSystemId $systemID -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}"}'
## 270 CertificateRequestOperationExecuted
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 270 -MyDssSystemId $systemID -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}"}'
## 20 CertificateCreated
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 20 -MyDssSystemId $systemID -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}"}'
# 2.2. Истёĸ сроĸ действия сертифиĸата:
## 2.3. Действие сертифиĸата приостановлено:
## CertificateHold = 49,
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 49 -MyDssSystemId $systemID -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}"}'
## 284 HoldCertificateOperationExecuted
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 284 -MyDssSystemId $systemID -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}"}'
## 2.4. Действие сертифиĸата возобновлено:
## CertificateUnhold = 50,
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 50 -MyDssSystemId $systemID -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}"}'
## 286 UnHoldCertificateOperationExecuted
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 286 -MyDssSystemId $systemID -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}"}'
## 3.1. Доступны операции для подтверждения
## SecondaryAuthLogin = 92,
## SecondaryAuthSign = 93,
## SecondaryAuthSignDocs = 94,
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 93 -MyDssSystemId $systemID -Text "Доступна новая операция для подтверждения" -Payload '{"app-event-type":"operations.new", "loc_key": "notification.operation.available", "body": "Доступна новая операция для подтверждения", "userID": "{0:UserID}", "transactionID": "{0:TransactionId}"}'
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 94 -MyDssSystemId $systemID -Text "Доступна новая операция для подтверждения" -Payload '{"app-event-type":"operations.new", "loc_key": "notification.operation.available", "body": "Доступна новая операция для подтверждения", "userID": "{0:UserID}", "transactionID": "{0:TransactionId}"}'
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 92 -MyDssSystemId $systemID -Text "Доступна новая операция для подтверждения" -Payload '{"app-event-type":"operations.new", "loc_key": "notification.operation.available", "body": "Доступна новая операция для подтверждения", "userID": "{0:UserID}", "transactionID": "{0:TransactionId}"}'
# Не забудьте добавить лицензию на компоненты ЦИ!
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/setting/license/sts.html
Мобильное приложение myDSS 2.0
# Настройка Сервиса взаимодействия с DSS SDK для работы с мобильным приложением myDSS 2.0
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/mDAG/scenario.html
#
#Указать путь к CaPolicy в настройках mDAG:
Set-MdagProperties -DisplayName $DisplayNameMD -CaMatadataPath <Путь к файлу capolicy>
#
# Порт для взаимодействия мобильного приложения с mDAG
# Внимание! На указанном порту должен быть привязан сертификат, выданный аккредитованным УЦ. Подробнее: https://dss.cryptopro.ru/docs/adminguide/mDAG/scenario.html
$mdag_port="4432"
# Строка адреса mDAG для последующей настройки
$MyDssAddress = "https://"+ $DNSNameMdag + ":" + $mdag_port + "/" + $DisplayNameMD
# Настройка PUSH-уведомлений для myDSS 2.0
# Доступны следующие сценарии ():
# Рассылка PUSH-уведомлений напрямую из Центра Идентификации
# Рассылка PUSH-уведомлений с использованием PUSH Proxy
# Рассылка PUSH-уведомлений напрямую из Центра Идентификации
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/notification/PUSH.html
#
# Ключ для PUSH-уведомлений Google
$GoogleServiceKey= ""
# Данные для PUSH-уведомлений Apple
$ApnClientCertPath =""
$ApnClientCertPassword=""
# Настройка плагинов рассылки PUSH-уведомлений
$systemID= (Add-MyDssSystem -DisplayName $DisplayNameidp -Name $DisplayName -GoogleServiceKey $GoogleServiceKey -MyDssAddress $MyDssAddress -ApnClientCertPath "$ApnClientCertPath" -ApnClientCertPassword $ApnClientCertPassword -PushType IdentityService).ID
# Рассылка PUSH-уведомлений с использованием PUSH Proxy
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/redist/pushproxy.html
#
# Имя модуля
$ModuleName =$DisplayName + "pushmodule_safetech"
# Логин для аутентификации
$AuthLogin = $DisplayName + "pushlogin_safetech"
# Пароль для аутентификации
$AuthPassword =$DisplayName + "pushpass_safetech"
# Имя экземпяра
$InstanceName = "pushproxy"
# Ключ для PUSH-уведомлений Google
$dssclient_GoogleServiceKey= ""
# Данные для PUSH-уведомлений Apple
$pushproxy_P8PrivateKeyFile =""
$pushproxy_TeamId =""
$pushproxy_P8PrivateKeyId =""
$AppBundleIdentifier= "ru.safe-tech.mydss"
# Данные для PUSH-уведомлений HMS
$HmsClientId = ""
$HmsClientSecret = ""
# Создание веб-приложения
Install-DssPushProxyInstance -InstanceName $InstanceName -SiteName "Default Web Site"
# Создание модуля
New-DssPushProxyModule -ModuleName $ModuleName -AuthLogin $AuthLogin -AuthPassword $AuthPassword
# Интеграция с APNS
Set-DssPushProxyApn -ModuleName $ModuleName -AppBundleIdentifier $AppBundleIdentifier -TeamId $pushproxy_TeamId -P8PrivateKeyId $pushproxy_P8PrivateKeyId -P8PrivateKeyFile $pushproxy_P8PrivateKeyFile
# Интеграция с FCM
Set-DssPushProxyFcm -ModuleName $ModuleName -GoogleServiceKey $dssclient_GoogleServiceKey
# Включение модуля APN
Enable-DssPushProxyApn -ModuleName $ModuleName
# Включение модуля FCM
Enable-DssPushProxyFcm -ModuleName $ModuleName
# Включение модуля HMS
Enable-DssPushProxyHms -ModuleName $ModuleName
# Перезапуск экземпляра Центра Идентификации
Restart-DssStsInstance -DisplayName $ApplicationNameidp
# Регистрация плагина рассылки PUSH-уведомлений
$Global:systemID = (Add-MyDssSystem -DisplayName $DisplayNameidp -Name $DisplayName -MyDssAddress $MyDssAddress -PushType PushProxy -PushProxyLogin $AuthLogin -PushProxyPassword $AuthPassword -PushProxyAddress "http://$DNSName/$InstanceName/$ModuleName" ).ID
# Настройка Oauth-аутентификации для взаимодействия с mDAG
$client_mdag = (Get-DssClient -DisplayName $DisplayNameidp | where { $_.ExtendedProperties -ne $null -and $_.ExtendedProperties["MyDssSystemId"] -eq $systemID}).ClientId
Set-DssClient -DisplayName $DisplayNameidp -ClientId $client_mdag -GenerateSecret
$secret_mdag = (Get-DssClientSecret -DisplayName $DisplayNameidp -ClientId $client_mdag).value
Set-MdagProperties -DisplayName $DisplayNameMD -ClientId $client_mdag -ClientSecret $secret_mdag
#Настройка шаблонов Push-уведомлений (подходит для любого выбранного способа рассылки PUSH-уведомлений)
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 234 -MyDssSystemId $systemID -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}"}'
## 1.3. Устройство заблоĸировано на сервере:
## myDssDeviceLocked = 320
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 320 -MyDssSystemId $systemID -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}"}'
## 1.4. Устройство разблоĸировано на сервере:
## myDssDeviceUnlocked = 321,
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 321 -MyDssSystemId $systemID -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}"}'
## 2.1. Сертифиĸат выпущен:
## CertificateInstalled = 58
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 58 -MyDssSystemId $systemID -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}"}'
## 270 CertificateRequestOperationExecuted
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 270 -MyDssSystemId $systemID -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}"}'
## 20 CertificateCreated
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 20 -MyDssSystemId $systemID -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}"}'
# 2.2. Истёĸ сроĸ действия сертифиĸата:
## 2.3. Действие сертифиĸата приостановлено:
## CertificateHold = 49,
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 49 -MyDssSystemId $systemID -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}"}'
## 284 HoldCertificateOperationExecuted
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 284 -MyDssSystemId $systemID -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}"}'
## 2.4. Действие сертифиĸата возобновлено:
## CertificateUnhold = 50,
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 50 -MyDssSystemId $systemID -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}"}'
## 286 UnHoldCertificateOperationExecuted
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 286 -MyDssSystemId $systemID -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}"}'
## 3.1. Доступны операции для подтверждения
## SecondaryAuthLogin = 92,
## SecondaryAuthSign = 93,
## SecondaryAuthSignDocs = 94,
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 93 -MyDssSystemId $systemID -Text "Доступна новая операция для подтверждения" -Payload '{"app-event-type":"operations.new", "loc_key": "notification.operation.available", "body": "Доступна новая операция для подтверждения", "userID": "{0:UserID}", "transactionID": "{0:TransactionId}"}'
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 94 -MyDssSystemId $systemID -Text "Доступна новая операция для подтверждения" -Payload '{"app-event-type":"operations.new", "loc_key": "notification.operation.available", "body": "Доступна новая операция для подтверждения", "userID": "{0:UserID}", "transactionID": "{0:TransactionId}"}'
Add-DssPushFormatterTemplate -DisplayName $DisplayNameidp -EventID 92 -MyDssSystemId $systemID -Text "Доступна новая операция для подтверждения" -Payload '{"app-event-type":"operations.new", "loc_key": "notification.operation.available", "body": "Доступна новая операция для подтверждения", "userID": "{0:UserID}", "transactionID": "{0:TransactionId}"}'
Перезапуск пулов приложений
# Перезапуск пулов приложений
Restart-DssDocumentStoreInstance -DisplayName $ApplicationNameDS
Restart-DssAnalyticsServiceInstance -DisplayName $ASAppName
Restart-DssFeInstance -DisplayName $ApplicationName
Restart-DssSignServerInstance -DisplayName $ApplicationNamess
Restart-DssStsInstance -DisplayName $ApplicationNameidp
Restart-MdagInstance -DisplayName $ApplicationNameMD
Резервирование аудита
# Резервирование аудита
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/auditrecords/auditbackup.html
Import-Module WebAdministration
# Резервирование аудита Сервиса Подписи
$notifiers = (Get-DssSTSNotifier -DisplayName $DisplayNameidp)
$audit = $notifiers | Where type -eq Audit
$pathPrefix = "C:\Audit_Reserve\"
$targetDir = $pathPrefix + $DisplayNamess + '\'
New-Item -ItemType directory -Path $targetDir
Set-DssSignServerNotifier -DisplayName $DisplayNamess -Settings @{"FolderPath" = $targetDir} -NotifierID $audit.Id;
$appPoolName = 'CryptoProDSS-1-' + $DisplayNamess;
$appPoolSid = (Get-ItemProperty IIS:\AppPools\$appPoolName).applicationPoolSid
$identifier = New-Object System.Security.Principal.SecurityIdentifier $appPoolSid
$user = $identifier.Translate([System.Security.Principal.NTAccount])
$acl = Get-ACL $targetDir
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($user,"FullControl", "ContainerInherit,ObjectInherit", "None", "Allow");
$acl.SetAccessRule($accessRule);
Set-Acl $targetDir $acl
# Резервирование аудита Центра Идентификации
$notifiers = (get-DssSignServerNotifier -DisplayName $DisplayNamess)
$audit = $notifiers | Where type -eq Audit
$targetDir = $pathPrefix + $DisplayNameidp + '\';
New-Item -ItemType directory -Path $targetDir
Set-DssSTSNotifier -DisplayName $DisplayNameidp -Settings @{"FolderPath" = $targetDir} -NotifierID $audit.Id;
$appPoolName = 'CryptoProDSS-1-' + $DisplayNameidp;
$appPoolSid = (Get-ItemProperty IIS:\AppPools\$appPoolName).applicationPoolSid
$identifier = New-Object System.Security.Principal.SecurityIdentifier $appPoolSid
$user = $identifier.Translate([System.Security.Principal.NTAccount])
$acl = Get-ACL $targetDir
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($user,"FullControl", "ContainerInherit,ObjectInherit", "None", "Allow");
$acl.SetAccessRule($accessRule);
Set-Acl $targetDir $acl
# Резервирование аудита Сервиса Обработки Документов
$notifiers = ( Get-DssDocumentStoreNotifier -DisplayName $DisplayNameDS )
$audit = $notifiers | Where type -eq Audit
$targetDir = $pathPrefix + $DisplayNameDS + '\';
New-Item -ItemType directory -Path $targetDir
set-DssDocumentStoreNotifier -DisplayName $DisplayNameDS -Settings @{"FolderPath" = $targetDir} -NotifierID $audit.Id;
$appPoolName = 'CryptoProDSS-1-' + $DisplayNameDS;
$appPoolSid = (Get-ItemProperty IIS:\AppPools\$appPoolName).applicationPoolSid
$identifier = New-Object System.Security.Principal.SecurityIdentifier $appPoolSid
$user = $identifier.Translate([System.Security.Principal.NTAccount])
$acl = Get-ACL $targetDir
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($user,"FullControl", "ContainerInherit,ObjectInherit", "None", "Allow");
$acl.SetAccessRule($accessRule);
Set-Acl $targetDir $acl
Кластер
# Настройка КриптоПро DSS в кластере
# Ниже приведены командлеты для настройки дополнительного узла кластера
# Необходимо скопировать все переменные, используемые для создания основного узла
# Внимание! для корректной работы серверов под управлением Microsoft IIS требуется настроить шифрование файлов
# cookie. Подробнее: http://dss.cryptopro.ru/docs/adminguide/setting/cookieenc.html
# Cтроки для подключения к БД. Необходимо выбрать только один блок команд.
#
# Подключение удаленной БД с Windows-аутентификацией
$connInfoSS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$SSdb" -AccountType Windows -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword -UseExistingDb
# connection_string to STS database
$connInfoSTS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$STSdb" -AccountType Windows -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword -UseExistingDb
# connection_string to AnalyticsService database
$connInfoAS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$Asdb" -AccountType Windows -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword -UseExistingDb
# connection_string to DocumentStore database
$connInfoDS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$DSdb" -AccountType Windows -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword -UseExistingDb
# connection_string to Operations database for SignServer
$connInfoOS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$OPdb" -AccountType Windows -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword -UseExistingDb
#
# Cтроки подключения к удаленной БД с SQL-аутентификацией
# connection_string to SignServer database
$connInfoSS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$SSdb" -AccountType SQL -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword -AsUser $AsUser -AsUserPassword $AsUserPassword -UseExistingDb
# connection_string to STS database
$connInfoSTS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$STSdb" -AccountType SQL -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword -AsUser $AsUser -AsUserPassword $AsUserPassword -UseExistingDb
# connection_string to AnalyticsService database
$connInfoAS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$Asdb" -AccountType SQL -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword -AsUser $AsUser -AsUserPassword $AsUserPassword -UseExistingDb
# connection_string to DocumentStore database
$connInfoDS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$DSdb" -AccountType SQL -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword -AsUser $AsUser -AsUserPassword $AsUserPassword -UseExistingDb
# connection_string to Operations database for SignServer
$connInfoOS = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName "$OPdb" -AccountType SQL -ServiceAccountName $SQLServiceAccountName -ServiceAccountPassword $SQLServiceAccountPassword -AsUser $AsUser -AsUserPassword $AsUserPassword -UseExistingDb
# Добавление экземпляра Сервиса Подписи
New-DssSignServerInstance -DisplayName $DisplayNamess -ApplicationName $ApplicationNamess -SiteName "$SiteName" -ConnectionInfo $connInfoSS
# Ввод лицензии на Сервис Подписи (см. бланк лицензии)
# Внимание! Требуется ввести лицензию типа "На дополнительный сервер"
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/setting/license/signserver.html
#Серийный номер
$SerialNumberSignServerLicense =""
#Имя компании
$CompanyNameSignServerLicense = ""
Add-DssLicense -DisplayName $DisplayNamess -SerialNumber $SerialNumberSignServerLicense -CompanyName $CompanyNameSignServerLicense
# Добавление экземпляра Центра Идентификации
New-DssStsInstance -DisplayName $DisplayNameidp -ApplicationName $ApplicationNameidp -SiteName "$SiteName" -ConnectionInfo $connInfoSTS
# Добавление экземпляра Сервиса Аудита
New-DssAnalyticsServiceInstance -SiteName "$SiteName" -ApplicationName $ASAppName -DisplayName $ASAppName -ConnectionInfo $connInfoAS
#Создание экземпляра Веб-интерфейса Пользователя
#Подробнее тут http://dss.cryptopro.ru/docs/adminguide/Frontend/scenario.html
New-DssFEInstance -DisplayName $DisplayName -ApplicationName $ApplicationName -SiteName "Default Web Site"
# Добавление отпечатка сертификата Веб-интерфейса Пользователя + Настройка адресов Сервиса Подписи и Центра Идентификации
Set-DssFEProperties -DisplayName $DisplayName -ServiceCertificate $fethumbprint -SignServerAddress "https://$DNSName/$DisplayNamess" -StsAddress "https://$DNSName/$ApplicationNameidp/Active.svc/service" -AnalyticsServiceAddress "https://$DNSName/$ASAppName"
#Регистрация на Веб-интерфейсе Пользователя Центра Идентификации в качестве доверенного издателя маркеров безопасности:
Add-DssFEClaimsProviderTrust -DisplayName $DisplayName -IssuerName realsts -Thumbprint $idpthumbprint
#Настройка на Центре Идентификации доступа по OpenID Connect
#Получаем Secret для клиента с ид сryptopro.dss.frontend.$DisplayName
$Secret =(get-DssClientSecret -DisplayName $DisplayNameidp -ClientId сryptopro.dss.frontend.$DisplayName).Value
set-DssClient -DisplayName $DisplayNameidp -AllowedFlow ClientCredentials, AuthorizationCode, TokenExchange -RedirectUri "https://$DNSName/$DisplayName/Admins/Users/ExternalCallback", "https://$DNSName/$DisplayName/Users/ExternalCallback" -ClientId сryptopro.dss.frontend.$DisplayName
Set-DssFeOidcSettings -DisplayName $DisplayName -Issuer "https://$DNSName/$ApplicationNameidp" -Realm "https://$DNSName/$DisplayName" -ClientId сryptopro.dss.frontend.$DisplayName -ClientSecret $Secret
# Внимание! Необходимо выдать права на доступ к закрытому ключу пулам приложений экземпляров сервисов
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/servicecertificates/privatekeyaccess.html
# Настройка myDSS (API v1)
# Подробнее тут: https://dss.cryptopro.ru/docs/adminguide/mydss/intro.html
# Необходимо задать следующие переменные или скопировать их из настроек для основного сервера
$MydssInternalbd = "MydssInternalbd$DisplayName"
$MydssExternalbd = "MydssExternalbd$DisplayName"
$InternalInstance= "MyDssServerInternal$DisplayName"
$ExternalInstance = "MyDssServerExternal$DisplayName"
# Строки подключения для удаленной БД с Windows-аутентификацией
$connInfoMYDSSInternal = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName $MydssInternalbd -AccountType Windows -ServiceAccountName $ServiceAccountName -ServiceAccountPassword $ServiceAccountPassword -UseExistingDb
$connInfoMYDSSExternal = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName $MydssExternalbd -AccountType Windows -ServiceAccountName $ServiceAccountName -ServiceAccountPassword $ServiceAccountPassword -UseExistingDb
# Строки подключения для удаленной БД с SQL-аутентификацией
$connInfoMYDSSInternal = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName $MydssInternalbd -AsUser $AsUser -AsUserPassword $AsUserPassword -AccountType SQL -ServiceAccountName $ServiceAccountName -ServiceAccountPassword $ServiceAccountPassword -UseExistingDb
$connInfoMYDSSExternal = New-DssSqlConnectionInfo -ServerName $SQLServerName -DatabaseName $MydssExternalbd -AsUser $AsUser -AsUserPassword $AsUserPassword -AccountType SQL -ServiceAccountName $ServiceAccountName -ServiceAccountPassword $ServiceAccountPassword -UseExistingDb
# Создание экземпляров сервисов myDSS
New-MyDssServerInternalInstance -SiteName "$SiteName" -DisplayName $InternalInstance -ApplicationName "$InternalInstance" -ConnectionInfo $connInfoMYDSSInternal
New-MyDssServerExternalInstance -SiteName "$SiteName" -DisplayName $ExternalInstance -ApplicationName "$ExternalInstance" -ConnectionInfo $connInfoMYDSSExternal
#В случае использования удаленной БД с Windows аутентфикацией необходимо настроить запуск службы mydsssrv0(КриптоПро myDSS (MyDssServerExternal)) от имени учетной аписи, имеющей доступ к БД.
# Настройка взаимодействия с DSS SDK (API v2)
# Создание и настройка Сервиса Обработки Документов
New-DssDocumentStoreInstance -ConnectionInfo $connInfoDS -ApplicationName $ApplicationNameDS -DisplayName $DisplayNameDS -SiteName 'Default Web Site'
#Добавляем ссылку на Веб-интерфейсе Пользователя
Set-DssFeProperties -DisplayName $ApplicationName -DocumentStoreAddress https://$DNSName/$ApplicationNameDS
# Создание и настройка Cервиса взаимодействия с DSS SDK
New-MdagInstance -SiteName 'Default Web Site' -DisplayName $DisplayNameMD -ApplicationName $ApplicationNameMD
Set-MdagProperties -DisplayName $ApplicationNameMD -IdpBaseAddress https://$DNSName/$ApplicationNameidp -SignServerBaseAddress https://$DNSName/$ApplicationNamess -DocumentStoreBaseAddress https://$DNSName/$ApplicationNameDS -AnalyticsBaseAddress "https://$DNSName/$ASAppName/"
$systemID = (Get-MyDssSystem -DisplayName $DisplayNameidp).id
$client_mdag = (Get-DssClient -DisplayName $DisplayNameidp | where { $_.ExtendedProperties -ne $null -and $_.ExtendedProperties["MyDssSystemId"] -eq $systemID}).ClientId
$secret_mdag = (Get-DssClientSecret -DisplayName $DisplayNameidp -ClientId $client_mdag).value
Set-MdagProperties -DisplayName $DisplayNameMD -ClientId $client_mdag -ClientSecret $secret_mdag
# Указать путь к CaPolicy в настройках mDAG:
Set-MdagProperties -DisplayName $DisplayNameMD -CaMatadataPath <Путь к файлу capolicy>
# Внимание! Необходимо выдать права на доступ к закрытому ключу пулам приложений экземпляров сервисов
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/servicecertificates/privatekeyaccess.html
# Настройка резервирования аудита в кластере
# Подробнее: https://dss.cryptopro.ru/docs/adminguide/auditrecords/auditbackup.html
# Данные наборы командлетов отличаются от резервирования аудита при настройке основного сервера кластера
#
Import-Module WebAdministration
#
# Резервирование аудита Сервиса Подписи
# Внимание! Путь в &pathPrefix должен совпадать с аналогичным путем на основном сервере кластера
$pathPrefix = "C:\Audit_Reserve\"
$targetDir = $pathPrefix + $DisplayNamess + '\';
New-Item -ItemType directory -Path $targetDir
$appPoolName = 'CryptoProDSS-1-' + $DisplayNamess;
$appPoolSid = (Get-ItemProperty IIS:\AppPools\$appPoolName).applicationPoolSid
$identifier = New-Object System.Security.Principal.SecurityIdentifier $appPoolSid
$user = $identifier.Translate([System.Security.Principal.NTAccount])
$acl = Get-ACL $targetDir
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($user,"FullControl", "ContainerInherit,ObjectInherit", "None", "Allow");
$acl.SetAccessRule($accessRule);
Set-Acl $targetDir $acl
#
# Резервирование аудита Центра Идентификации
$pathPrefix = "C:\Audit_Reserve\"
$targetDir = $pathPrefix + $DisplayNameidp + '\';
New-Item -ItemType directory -Path $targetDir
$appPoolName = 'CryptoProDSS-1-' + $DisplayNameidp;
$appPoolSid = (Get-ItemProperty IIS:\AppPools\$appPoolName).applicationPoolSid
$identifier = New-Object System.Security.Principal.SecurityIdentifier $appPoolSid
$user = $identifier.Translate([System.Security.Principal.NTAccount])
$acl = Get-ACL $targetDir
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($user,"FullControl", "ContainerInherit,ObjectInherit", "None", "Allow");
$acl.SetAccessRule($accessRule);
Set-Acl $targetDir $acl
#
#Резервирование аудита Сервиса Обработки Документов
$pathPrefix = "C:\Audit_Reserve\"
$targetDir = $pathPrefix + $DisplayNameDS + '\';
New-Item -ItemType directory -Path $targetDir
$appPoolName = 'CryptoProDSS-1-' + $DisplayNameDS;
$appPoolSid = (Get-ItemProperty IIS:\AppPools\$appPoolName).applicationPoolSid
$identifier = New-Object System.Security.Principal.SecurityIdentifier $appPoolSid
$user = $identifier.Translate([System.Security.Principal.NTAccount])
$acl = Get-ACL $targetDir
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($user,"FullControl", "ContainerInherit,ObjectInherit", "None", "Allow");
$acl.SetAccessRule($accessRule);
Set-Acl $targetDir $acl
Разное
Защита пулов приложений от выгрузки при простое
# (Необязательно) Защита пулов приложений от выгрузки при простое
# Получение имен пулов Центра Идентификации, Сервиса Подписи, Сервиса Аудита
import-module WebAdministration
$idp_poolname = (Get-ChildItem IIS:\AppPools|where {$_.Name -like "CryptoProDSS-1-$DisplayNameidp"}).name
$ss_poolname = (Get-ChildItem IIS:\AppPools|where {$_.Name -like "CryptoProDSS-1-$DisplayNamess"}).name
$audit_poolname = (Get-ChildItem IIS:\AppPools|where {$_.Name -like "CryptoProDSS-1-$ASAppName"}).name
$mdag_poolname = (Get-ChildItem IIS:\AppPools|where {$_.Name -like "CryptoProDSS-1-$DisplayNameMD"}).name
# Включение режима запуска AlwaysRunning + отключение таймаута простоя
Set-ItemProperty IIS:\AppPools\$idp_poolname -Name startMode -Value 1
Set-ItemProperty IIS:\AppPools\$idp_poolname -Name processModel.idleTimeout -Value "00:00:00"
Set-ItemProperty IIS:\AppPools\$ss_poolname -Name startMode -Value 1
Set-ItemProperty IIS:\AppPools\$ss_poolname -Name processModel.idleTimeout -Value "00:00:00"
Set-ItemProperty IIS:\AppPools\$audit_poolname -Name startMode -Value 1
Set-ItemProperty IIS:\AppPools\$audit_poolname -Name processModel.idleTimeout -Value "00:00:00"
Set-ItemProperty IIS:\AppPools\$mdag_poolname -Name startMode -Value 1
Set-ItemProperty IIS:\AppPools\$mdag_poolname -Name processModel.idleTimeout -Value "00:00:00"
Ограничение размера запроса к серверу
# Задание максимального размера запроса к серверу
# В случае если используется кластер, необходимо выполнить команды на всех узлах кластера.
$size="20971520"
Set-DssEndpointGlobalSettings -DisplayName $DisplayNamess -MaxMessageSize $size
Set-DssStsEndpointGlobalSettings -DisplayName $DisplayNameidp -MaxMessageSize $size
Set-DssFeProperties -DisplayName $DisplayName -MaxIisContentLength $size
Set-MdagEndpointGlobalSettings -DisplayName $ApplicationNameMD -MaxMessageSize $size
Set-DssDocumentStoreProperties -DisplayName $DisplayNameDS -MaxMessageSize $size
Restart-DssDocumentStoreInstance -DisplayName $ApplicationNameDS
Restart-DssAnalyticsServiceInstance -DisplayName $ASAppName
Restart-DssFeInstance -DisplayName $ApplicationName
Restart-DssSignServerInstance -DisplayName $ApplicationNamess
Restart-DssStsInstance -DisplayName $ApplicationNameidp
Restart-MdagInstance -DisplayName $ApplicationNameMD
Проверка работоспособности пулов приложений
# Проверка работоспособности пулов приложений
# Необходимо открыть данные адреса в браузере и убедиться, что при этом не возникла ошибка (кроме ошибки сертификата)
# https://localhost/<ApplicationName Сервиса Подписи>/Signservice.svc
# https://localhost/<ApplicationName Центра Идентификации>/Active.svc
# https://localhost/<ApplicationName Сервиса Аудита>/AnalyticsService.svc
# https://localhost/<ApplicationName Веб-интерфейса Пользователя>
# Проверка работоспособности Сервиса взаимодействия с DSS SDK
# Если было настроено взаимодействие с DSS SDK и используется мобильное приложение, после перехода по данной ссылке должны быть скачаны файлы.
# https://localhost:<Порт для Сервиса взаимодействия с DSS SDK (mdag)>/sblogmdag/v1/policy
# https://localhost/sblogds/api/debug