Показать/Скрыть содержание

    DSS PUSH Proxy

    DSS PUSH Proxy - это дополнительное программное обеспечение для КриптоПро DSS, позволяющее модифицировать доставку PUSH-уведомлений пользователям. Встроенные возможности КриптоПро DSS предполагают рассылку PUSH-уведомлений при помощи сервиса рассылки уведомлений Центра Идентификации. Для этого серверу, где находится ЦИ, требуется разрешать соединение с внешними PUSH-серверами, что может не соответствовать требованиям к безопасности инфраструктуры, в которой развернут КриптоПро DSS. PUSH Proxy позволяет организовать соединение с внешними PUSH-серверами из выделенного сегмента сети (DMZ), как это изображено на рисунке ниже.

    pushproxy.png

    Настройка 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

    Доступ к Firebase Cloud Messaging Server: https://fcm.googleapis.com/fcm/send

    Доступ к 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 Cloud Messaging Server (-GoogleServiceKey). Получить данный ключ можно по запросу на 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 потребуется задать следующие параметры:

    • -GoogleServiceKey - ключ для подключения к серверу FCM.
    # Интеграция с FCM
    Set-DssPushProxyFcm -ModuleName $ModuleName -GoogleServiceKey AAAA5XaDpo...YtDMVKb3L
    

    Для интеграции с 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 Proxy
    • PushProxyLogin, PushProxyPassword - учетные данные для подключения к экземпляру сервиса PUSH Proxy, которые были заданы на этапе настройки модуля PUSH Proxy
    • PushProxyAddress - 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 Proxy
    • PushProxyAddress - 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"
    
    В начало © ООО "КРИПТО-ПРО", 2000-2023