DSS PUSH Proxy
DSS PUSH Proxy - это дополнительное программное обеспечение для КриптоПро DSS, позволяющее модифицировать доставку PUSH-уведомлений пользователям. Встроенные возможности КриптоПро DSS предполагают рассылку PUSH-уведомлений при помощи сервиса рассылки уведомлений Центра Идентификации. Для этого серверу, где находится ЦИ, требуется разрешать соединение с внешними PUSH-серверами, что может не соответствовать требованиям к безопасности инфраструктуры, в которой развернут КриптоПро DSS. PUSH Proxy позволяет организовать соединение с внешними PUSH-серверами из выделенного сегмента сети (DMZ), как это изображено на рисунке ниже.
Настройка DSS PUSH Proxy
DSS PUSH Proxy представляет собой веб-сервис, развернутый на сервере приложений IIS. Сервис не требует БД. Перед установкой и развертыванием DSS PUSH Proxy необходимо обеспечить наличие следующих компонентов:
- Сервер в DMZ для доступа к PUSH-серверам (выделять отдельный сервер под PUSH Proxy необязательно)
- ОС Microsoft Windows Server 2016 и новее
- Установленный и настроенный IIS (Инструкция)
- Дистрибутив DSS PUSH Proxy и вспомогательного ПО (Загрузка)
- Доступ к PUSH-серверам
Примечание
DSS PUSH Proxy использует новый протокол взаимодействия с сервером 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
.
Поддержка доступа к к Google API HTTP v1 реализована только в версиях PushProxy не ниже 2.0.4690.
Доступ к Huawei Mobile Services:
https://oauth-login.cloud.huawei.com/oauth2/v2/token
https://push-api.cloud.huawei.com/v1
Внимание!
Отправка PUSH-уведомлений на устройства HUAWEI поддерживается только в версиях КриптоПро DSS и PUSH Proxy не ниже 2.0.3584.
Для отправки PUSH-уведомлений на устройства HUAWEI в более ранних версиях КриптоПро DSS необходима установка дополнительных программных библиотек. Библиотеки предоставляются по запросу на https://support.cryptopro.ru/.
Примечание
Для отправки 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
.
Настройка DSS PUSH Proxy состоит из следующих этапов:
Установка DSS PUSH Proxy и вспомогательного ПО
На данном этапе системный администратор устанавливает дистрибутивы DSS PUSH Proxy и вспомогательного ПО, полученного им ранее на странице загрузки.
Настройка сервера с DSS PUSH Proxy
Настройка сервера с установленным PUSH Proxy должна производиться в консоли Powershell, запущенной от имени администратора.
1. Создание веб-приложения
На данном этапе системный администратор создает экземпляр сервиса DSS PUSH Proxy (например,
с именем pushproxy
) и указывает имя сайта, на котором будет развернуто веб-приложение данного
сервиса (например, имя сайта по умолчанию "Default Web Site
").
$InstanceName ="pushproxy"
$SiteName = "Default Web Site"
Install-DssPushProxyInstance -InstanceName $InstanceName -SiteName $SiteName
2. Подготовка к интеграции с ЦИ DSS
В ЦИ КриптоПро DSS может быть зарегистрировано несколько наборов плагинов (т.н. "прикладных систем") для отправки PUSH-уведомлений. Каждая из этих прикладных систем ассоциирована с одним мобильным приложением, используемым какой-либо организацией. По умолчанию все эти прикладные системы рассылают PUSH-уведомления с использованием Сервиса рассылки уведомлений своего ЦИ. Чтобы PUSH-уведомления какой-либо системы перенаправлялись через сервис PUSH Proxy, на данном сервисе необходимо зарегистрировать соответствующий модуль оповещения.
Примечание
Несколько прикладных систем, находящихся в пределах одного ЦИ DSS, могут быть подключены к одному экземпляру сервиса PUSH Proxy. При этом для каждой из систем на сервисе PUSH Proxy должен быть зарегистрирован соответствующий модуль.
Примечание
Несколько экземпляров ЦИ DSS с зарегистрированными на них прикладными системами также могут быть подключены к одному экземпляру сервиса PUSH Proxy. В этом случае для каждой из прикладных систем каждого экземпляров ЦИ должен быть зарегистрирован соответствующий модуль на сервисе PUSH Proxy.
Модуль PUSH Proxy представляет собой набор плагинов, позволяющих отправлять PUSH-уведомления на устройства пользователей под управлением ОС iOS и Android (в т.ч. для устройств Huawei).
Регистрация модуля состоит из следующих шагов:
- Создание модуля
При создании модуля необходимо указать имя данного модуля и аутентификационные данные (логин и пароль) для последующего подключения к нему со стороны КриптоПро DSS.
Примечание
Имя модуля, указанное при его создании, включается в URL-адрес, используемый для подключения КриптоПро DSS к PUSH Proxy. Поэтому имя модуля должно сооветствовать требованиям, содержащимся в RFC 3986.
$ModuleName ="oneproxy"
$AuthLogin ="oneproxylogin"
$AuthPassword ="oneproxypass"
New-DssPushProxyModule -ModuleName $ModuleName -AuthLogin $AuthLogin -AuthPassword $AuthPassword
- Настройка аутентификации PUSH Proxy на внешних PUSH-серверах
Примечание
- Для аутентификации на внешних PUSH-серверах у администратора должны быть заранее получены учетные данные, соответствующие требованиям данного PUSH-сервера.
- Системный администратор должен настраивать аутентификацию только для тех PUSH-серверов, которые планируется использовать для доставки PUSH-уведомлений пользователям.
- Если на экземпляре сервиса PUSH Proxy зарегистрировано более одного модуля, необходимо
указывать параметр
-ModuleName
.
Для интеграции с APNS потребуется задать следующие параметры:
-AppBundleIdentifier
- уникальный идентификатор приложения в магазине приложений App Store;-TeamId
- уникальный идентификатор группы разработчиков;-P8PrivateKeyId
идентификатор ключа, используемого для подключения к APN;-P8PrivateKeyFile
- контейнер с закрытым ключом для подключения к APN;-DebugMode
- режим отправки PUSH-уведомлений.
# Интеграция с APNS
$P8PrivateKeyFile = "filepath.p8"
Set-DssPushProxyApn -ModuleName $ModuleName -AppBundleIdentifier ru.company.mydss -TeamId GDH765RWJD -P8PrivateKeyId 52N5ZJVBQX -P8PrivateKeyFile $P8PrivateKeyFile
# Настройка режима отправки PUSH-уведомлений
# 0 - production
# 1 - sandbox
Set-DssPushProxyApn -ModuleName $ModuleName -DebugMode 0
Для интеграции с FCM потребуется задать следующие параметры:
-ServiceAccountFile
- сервисный ключ доступа.
# Интеграция с FCM
Set-DssPushProxyFcm -ModuleName $ModuleName -ServiceAccountFile "Путь к файлу сервисного ключа доступа"
Для интеграции с HMS потребуется задать следующие параметры:
-ClientId
- идентификатор подключения к серверу HMS.-ClientSecret
- ключ для подключения к серверу HMS.
# Интеграция с HMS
Set-DssPushProxyHms -ModuleName $ModuleName -ClientId 12345678 -ClientSecret c573e8fdfd...7792
- Включение модулей
Примечание
Если на экземпляре сервиса PUSH Proxy зарегистрировано более одного модуля, необходимо
указывать параметр -ModuleName
.
# Включение модуля APNS
Enable-DssPushProxyApn -ModuleName $ModuleName
# Включение модуля FCM
Enable-DssPushProxyFcm -ModuleName $ModuleName
# Включение модуля HMS
Enable-DssPushProxyHms -ModuleName $ModuleName
Настройка КриптоПро DSS для работы с DSS PUSH Proxy
На данном этапе системный администратор на сервере, где развернут ЦИ КриптоПро DSS, выполняет
- перенастройку существующего транспортного плагина, осуществляющего рассылку PUSH-уведомлений пользователям,
- настройку нового транспортного плагина, если необходимо настроить отправку PUSH-уведомлений при помощи PUSH Proxy "с нуля".
Все действия должны производиться в консоли Powershell, запущенной от имени администратора.
Перенастройка существующего плагина
Для того, чтобы перенаправить PUSH-уведомления, отправляемые траспортным плагином, на сервис PUSH Proxy, необходимо получить идентификатор данного плагина. Получить идентификатор возможно при помощи командлета Get-DssStsPlugin. После этого необходимо задать новые параметры для выбранного плагина:
UsePushProxy
- включение/отключение отправки Push-уведомлений через сервис PUSH ProxyPushProxyLogin
,PushProxyPassword
- учетные данные для подключения к экземпляру сервиса PUSH Proxy, которые были заданы на этапе настройки модуля PUSH ProxyPushProxyAddress
- URL-адрес PUSH Proxy
URL-адрес сервиса PUSH Proxy имеет следующий формат:
http(s)://<hostname>/pushproxy/<modulename>
где
hostname
- DNS-имя сервера, на котором развернут PUSH Proxy;pushproxy
- имя экземпляра сервиса, указанное при его создании в параметре-InstanceName
;modulename
- имя модуля PUSH Proxy.
Пример:
# Идентификатор прикладной системы. Значение можно получить при помощи командлета Get-MyDssSystem
$systemID = <mydsssystem>
# Имя экземпляра ЦИ
$ApplicationNameidp = "STS"
# Получение идентификатора модуля оповещения:
$IDP_notifier = Get-DssInternalNotifier -DisplayName $ApplicationNameidp | where {$_.Type -eq "Push" -and $_.Settings["MyDssSystemId"] -eq "$systemID"}
# Настройка подключения к сервису PUSH Proxy:
Set-DssStsPlugin -DisplayName $ApplicationNameidp -PluginID $IDP_notifier.TransportPlugin.Id -Settings @{"UsePushProxy"="true";"PushProxyAddress"="http://<hostname>/pushproxy/oneproxy";"PushProxyLogin"="oneproxylogin";"PushProxyPassword"="oneproxypass";"WarmUpFCM"="False"}
# Перезапуск экземпляра ЦИ
Restart-DssStsInstance
Настройка нового плагина
Для того, чтобы настроить новый транспортный плагин для использования с DSS PUSH Proxy, необходимо задать следующие параметры в командлете Add-MyDssSystem:
PushType
- сущность, создающая PUSH-уведомления. Для DSS PUSH Proxy необходимо использовать значениеPushProxy
.PushProxyLogin
,PushProxyPassword
- учетные данные для подключения к экземпляру сервиса PUSH Proxy, которые были заданы на этапе настройки модуля PUSH ProxyPushProxyAddress
- URL-адрес PUSH Proxy
URL-адрес сервиса PUSH Proxy имеет следующий формат:
http(s)://<hostname>/pushproxy/<modulename>
где
hostname
- DNS-имя сервера, на котором развернут PUSH Proxy;pushproxy
- имя экземпляра сервиса, указанное при его создании в параметре-InstanceName
;modulename
- имя модуля PUSH Proxy.
#Имя экземпляра Центра Идентификации
$STSAppName = "STS"
#Задаём URL MDAG
$mdagUrl = "https://<hostname>/mdag"
#Задаем отображаемое имя системы
$systemDisplayName = "system_display_name"
#Регистрация системы
#При регистрации также будут зарегистрированы модули оповещения и OAuth-клиент
$system = Add-MyDssSystem -DisplayName $STSAppName -Name $systemDisplayName -MyDssAddress $mdagUrl -PushType PushProxy -PushProxyLogin oneproxylogin -PushProxyPassword oneproxypass -PushProxyAddress "http://<hostname>/pushproxy/oneproxy"