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

    Сервис обнаружения

    В одном домене (под доменом понимается некоторая физическая среда, стоящая за одним доменным именем) может быть установлено нексколько экземпляров DSS. В такой конфигурации пользователю может быть предоставлен выбор, к какому конкретному экземпляру подключиться для выполнения операции. Для принятия решения пользователь должен ознакомиться с описанием всех доступных экземпляров. Клиентская система может получить данное описание с помощью Сервиса обнаружения (Discovery Service).

    Протокол WebFinger

    Cервиса обнаружения использует протокол WebFinger (RFC7033).

    Для получения информации о всех зарегистрированных экземплярах служб DSS клиент отправляет следующий HTTP запрос:

    GET https://dss.cryptopro.ru/.well-known/webfinger
        ?resource=https%3A%2F%2Fdss.cryptopro.ru
    

    В ответ сервер возвращает так называемый JSON описатель ресурса (Json Resource Descriptor, JRD). В данном случае ресурсом становится сам сервер (именно поэтому в качестве параметра resource передавлся URL адрес самого сервера):

    [
    {
        "subject" : "https://dss.cryptopro.ru",
        "links" : [
            {
                "title" : 
                {
                    "ru-RU" : "Тестовый Сервер Электронной Подписи КриптоПро",
                    "en-US" : "The Crypto-Pro Test Digital Signature Server"
                },
                "rel" : "http://dss.cryptopro.ru/signserver",
                "href" : "https://dss.cryptopro.ru/SignServer/",
                "properties" : 
                {
                    "http://dss.cryptopro.ru/sts" : "https://dss.cryptopro.ru/STS/",
                    "http://dss.cryptopro.ru/frontend" : "https://dss.cryptopro.ru/Frontend/"
                }
            },
            {
                "title" : 
                {
                    "ru-RU" : "Тестовый Сервер Электронной Подписи Lite КриптоПро",
                    "en-US" : "The Crypto-Pro Test Digital Signature Server Lite"
                },
                "rel" : "http://dss.cryptopro.ru/signserver",
                "href" : "https://dss.cryptopro.ru/SignServerLite/",
                "properties" : 
                {
                    "http://dss.cryptopro.ru/sts" : "https://dss.cryptopro.ru/STS/",
                  "http://dss.cryptopro.ru/frontend" : "https://dss.cryptopro.ru/Lite/"
                    "http://dss.cryptopro.ru/signserver-type" : "client"
                }
            },
            {
                "title" : 
                {
                    "ru-RU" : "Тестовый Центр Идентификации КриптоПро",
                    "en-US" : "The Crypto-Pro TestIdentity Provider"
                },
                "rel" : "http://dss.cryptopro.ru/sts",
                "href" : "https://dss.cryptopro.ru/STS/"
            },
            {
                "title" : 
                {
                    "ru-RU" : "Веб-интерфейс Сервиса Подписи КриптоПро",
                    "en-US" : "The Crypto-Pro Sign Service Web Interface"
                },
                "rel" : "http://dss.cryptopro.ru/frontend",
                "href" : "https://dss.cryptopro.ru/Frontend/",
                "properties" : 
                {
                    "http://dss.cryptopro.ru/sts" : "https://dss.cryptopro.ru/STS/",
                    "http://dss.cryptopro.ru/signserver" : "https://dss.cryptopro.ru/SignServer/"
                }
            },
            {
                "title" : 
                {
                    "ru-RU" : "Веб-интерфейс Сервиса Подписи КриптоПро Lite",
                    "en-US" : "The Crypto-Pro Sign Service Lite Web Interface"
                },
                "rel" : "http://dss.cryptopro.ru/frontend",
                "href" : "https://dss.cryptopro.ru/Frontend/",
                "properties" : 
                {
                    "http://dss.cryptopro.ru/sts" : "https://dss.cryptopro.ru/STS/",
                    "http://dss.cryptopro.ru/signserver" : "https://dss.cryptopro.ru/SignServerLite/"
                }
            }       
        ] 
    }
    ]
    

    JRD документ

    JRD описывает некоторый ресурс (в данном случае сам сервер). Его основными элементами является свойство subject (являющееся идентификатором описываемой сущности; его значение может и не совпадать со значеним параметра resource, переданного в запросе) и набора связей (link). В данном случае под связью понимаются экземемпляры служб DSS, установленные на данном сервере.

    Каждая связь характеризуется следующими параметрами:

    • rel - тип отношения. В случае описания сервера DSS под типом понимаются различные типы сервисов DSS (Центр Идентификации, Сервис Подписи, Веб-интерфейс и т.д.)
    • href - ссылка на экземпляр службы.
    • title - отображаемое название экземпляра службы, может отличаться для разных языков.
    • properties - словарь (ключ/значение) дополнительных свойств связи.

    В JRD примере, представленном выше, содержится пять связей, соответствующих пяти службам DSS, развернутым на этом сервере (естетственно, что служб может быть развернуто больше, но администратор сервере решил описать только указанные в JRD).

    Типы связей

    Сервис обнаружения КриптоПро DSS оперирует следующими типами связей:

    Идентификатор типа Описание Примечание
    http://dss.cryptopro.ru/signserver Сервис подписи href задает базовый адрес веб-приложения
    http://dss.cryptopro.ru/sts Центр Идентификации href задает базовый адрес веб-приложения
    http://dss.cryptopro.ru/frontend Веб-интерфейс пользователя href задает адрес веб-приложения

    Свойства связей

    Свойства позволяют описать дополнительную информацию о связанной службе. Например, свойство http://dss.cryptopro.ru/frontend описывает адрес веб-интерфейса пользователя, соответствующего данной службе Сервиса Подписи.

    Сервис обнаружения КриптоПро DSS оперирует следующими типами свойств:

    Идентификатор типа Описание
    http://dss.cryptopro.ru/signserver URL-адрес сервиса подписи
    http://dss.cryptopro.ru/sts URL адрес Центра Идентификацц
    http://dss.cryptopro.ru/frontend URL адрес веб-интерфейса
    http://dss.cryptopro.ru/signserver-type Режим работы сервиса подписи

    Свойство signserver-type

    Данное свойство определяет режим работы экземпляра службы Сервиса Подписи КриптоПро DSS. Возможные значения

    • client - Сервис Подписи работает в режиме КриптоПро DSS Lite, то есть с ключами, хранящимися на устройстве пользователя.
    • server - Сервис Подписи работает с "облачными" ключами. Если свойство signserver-type не указано, используется это значение по умочланию.
    • server-client - Сервис Подписи работает в смешанном режиме.

    Обработка JRD документа

    Рассмотрим один из вариантов чтения JRD документа.

    1. Клиентское приложение (далее просто клиент) запрашивает у пользователя адрес сервера, к которому он хочет подключиться.
    2. Клиент отправляет запрос по протоколу WebFinger к указанному серверу, указывая в качестве параметра resource адрес сервера.
    3. Получив в ответ JRD описание, клиент находит в нем связи с типом rel=http://dss.cryptopro.ru/signserver, тем самым перечисляя все установленные на этом сервере экземпляры службы Сервиса Подписи.
    4. Клиент отображает пользователю найденные службы, показывая в списке их понятное описание (title).
    5. После того, как пользователь выбрал экземпляр, клиент может получить URL-адрес Центра Идентификации из свойства http://dss.cryptopro.ru/sts и сформировать запрос на авторизацию.

    Получение конкретной связи

    В запрос по протоколу WebFinger можно добавить параметр rel с указанием конкретного типа связи, который хочется получить. В этом случае сервер вернет только запрошенные связи:

    Запрос

    GET https://dss.cryptopro.ru/.well-known/webfinger
        ?resource=https%3A%2F%2Fdss.cryptopro.ru
        &rel=http%3A%2F%2Fdss.cryptopro.ru%2Fsignserver
    

    Ответ

    [
    {
        "subject" : "https://dss.cryptopro.ru",
        "links" : [
            {
                "title" : 
                {
                    "ru-RU" : "Тестовый Сервер Электронной Подписи КриптоПро",
                    "en-US" : "The Crypto-Pro Test Digital Signature Server"
                },
                "rel" : "http://dss.cryptopro.ru/signserver",
                "href" : "https://dss.cryptopro.ru/SignServer/",
                "properties" : 
                {
                    "http://dss.cryptopro.ru/sts" : "https://dss.cryptopro.ru/STS/",
                    "http://dss.cryptopro.ru/frontend" : "https://dss.cryptopro.ru/Frontend/"
                }
            },
            {
                "title" : 
                {
                    "ru-RU" : "Тестовый Сервер Электронной Подписи Lite КриптоПро",
                    "en-US" : "The Crypto-Pro Test Digital Signature Server Lite"
                },
                "rel" : "http://dss.cryptopro.ru/signserver",
                "href" : "https://dss.cryptopro.ru/SignServerLite/",
                "properties" : 
                {
                    "http://dss.cryptopro.ru/sts" : "https://dss.cryptopro.ru/STS/",
                  "http://dss.cryptopro.ru/frontend" : "https://dss.cryptopro.ru/Lite/"
                    "http://dss.cryptopro.ru/signserver-type" : "client"
                }
            }   
        ] 
    }
    ]
    

    Установка и удаление сервиса обнаружения

    Сервис обнаружения входит в состав дистрибутива DSS в виде самораспаковывающегося архива dss-webfinger-{version}.exe.

    После распаковки архива необходмио установить HTTP модуль для IIS. Это делается с помощью следующих PowerShell командлетов:

    # Импортируем PowerShell модуль.
    Import-Module "<Путь установки>\PowerShell\CryptoPro.DSS.WebFinger\CryptoPro.DSS.WebFinger.psm1"
    Add-WebFingerService -SiteName "Default Web Site"
    

    Для удаление сервиса с сервера IIS необходимо выполнить следующие команды

    # Импортируем PowerShell модуль.
    Import-Module "<Путь установки>\PowerShell\CryptoPro.DSS.WebFinger\CryptoPro.DSS.WebFinger.psm1"
    Remove-WebFingerService -SiteName "Default Web Site"
    

    Если в каком-либо из командлетов не указать значение для параметра SiteName, то будет использовано значение по умолчанию Default Web Site.

    Заполнение JRD документа

    После разворачивания сервиса в папке, где расположен веб-сайт (для Default Web Site это C:\inetpub\wwwroot\.well-known\webfinger) появится файл registry.json. Содержимое файла заполнено демонстрационными данными (как в примере выше). Данный файл можно редактировать в любом текстовом редакторе. Сразу после редактирования новые данные будут возвращены сервисом.

    В начало © ООО "КРИПТО-ПРО", 2000–2025