Документация BILLmanager 6

Модуль "Авторизация через ЕСИА"

Модуль Авторизация через ЕСИА (единая система идентификации и аутентификации) предоставляет пользователям возможность зарегистрироваться и авторизоваться через Госуслуги.

Интеграция BILLmanager с Госуслугами (ЕСИА) состоит из трёх этапов:

  1. Установка средств шифрования CSP CryptoPro на сервер с платформой.
  2. Установка ключа и сертификатов.
  3. Настройка интеграции в BILLmanager.
Обратите внимание!
Доступ к Госуслугам возможен только с российских IP-адресов.

Установка CSP CryptoPro

Для установки CSP CryptoPro на операционные системы Unix следуйте инструкциям поставщика программного обеспечения. Процесс установки включает следующие этапы:

  1. Покупка и установка лицензии на CSP CryptoPro.
  2. Установка компонентов LSB (Linux Standart Base). LSB — набор пакетов, обеспечивающий интерфейс для работы продукта в различных Unix-системах.
  3. Загрузка дистрибутива. Текущая сертифицированная версия доступна на сайте производителя.
  4. Распаковка и установка архива. Для установки используется скрипт install.sh.
  5. Установка закрытых ключей и сертификатов.

Установка ключа и сертификатов

Этап 1. Получение ключей и сертификатов

  1. Подключите свою компанию по инструкции. Вы получите:
    • ключ и сертификаты компании для работы с Госуслугами;
    • логин и пароль пользователя компании.
  2. Создайте Мнемонику ИС:
    1. Перейдите на сайт, в зависимости от выбора окружения Госуслуг: 
    2. Авторизуйтесь с данными пользователя из шага 1.
    3. Укажите для поля "Алгоритм формирования электронной подписи" значение "GOST3410_2012_256".
  3. Скачайте сертификаты для валидации ответов от ЕСИА: http://esia.gosuslugi.ru/public/esia.zip.

В результате вы получите следующие компоненты для настройки интеграции:

  • сертификат компании в формате "yyyyy.cer";
  • ключи компании — директория с именем в формате "keys/хххххххх.000/";
  • публичный сертификат Госуслуг для валидации ответов в формате "zzzzz.cer";
  • мнемоника ИС.

Этап 2. Установка сертификатов

  1. Загрузите на сервер с BILLmanager файлы, полученные на этапе 1:
    • сертификат компании в формате "yyyyy.cer";
    • ключи компании — директория с именем в формате "keys/хххххххх.000/";
    • публичный сертификат Госуслуг для валидации ответов в формате "zzzzz.cer". Выбирается в зависимости от:
      • окружения Госуслуг — тестовое или продуктовое;
      • "Алгоритма формирования электронной подписи", выбранного на Этапе 1 п. 2.
  2. Поместите скопированные файлы в каталог для хранения ключей каждого пользователя системы. Для учётной записи суперпользователя (root) по умолчанию используется каталог /var/opt/cprocsp/keys/root/.

    cp -r keys/хххххххх.000/ /var/opt/cprocsp/keys/root/
  3. Получите имена установленных ключей:

    /opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifycontext -fqcn

    Команда выводит имена установленных ключей в виде "\\.\HDIMAGE\хххххххх-0000-0000-0000-000000000000".

  4. Снимите пароль с сертификата, иначе авторизация через ЕСИА не будет работать:

    /opt/cprocsp/bin/amd64/csptest -passwd -change '' -cont '\\.\HDIMAGE\хххххххх-0000-0000-0000-000000000000' -passwd '1234567890'
    Комментарии к команде
  5. Установите публичный сертификат Госуслуг:

    /opt/cprocsp/bin/amd64/certmgr -inst -file zzzzz.cer
  6. Установите сертификат компании:

    /opt/cprocsp/bin/amd64/certmgr -inst -file yyyyy.cer -cont '\\.\HDIMAGE\хххххххх-0000-0000-0000-000000000000'

Настройка на стороне BILLmanager

Чтобы установить модуль, перейдите в раздел Интеграция → Модули → Авторизация через ЕСИА → кнопка Установить.

Настройка интеграции:

  1. Перейдите в раздел ИнтеграцияМодулиАвторизация через ЕСИА → кнопка .
  2. Заполните форму:
    1. Госуслуги (ЕСИА) API URL — укажите HTTPS-адрес REST API системы Госуслуги (ЕСИА):
    2. Мнемоника ИС — укажите ваш буквенно-цифровой код информационной системы.
    3. Сертификат — выберите сертификат, который будет использоваться для подписи запросов для Госуслуги (ЕСИА).
    4. Инвертировать подпись — активируйте опцию, чтобы зеркально побайтово развернуть полученную подпись.
    5. Проверять подпись сообщений от Госуслуги (ЕСИА) — активируйте опцию, чтобы проверять подпись сообщений от Госуслуги (ЕСИА).
    6. Сертификат Госуслуги (ЕСИА) — выберите сертификат, который будет использоваться для проверки подписи сообщений от Госуслуги (ЕСИА).
    7. Нажмите Ок.

Дополнительно

Логирование

Лог взаимодействия BILLmanager с модулем записывается в файл /usr/local/mgr5/var/omesia.log.

Диагностика неполадок

Проблема

Авторизация не работает, а при максимальном уровне логирования в логе /usr/local/mgr5/var/omesia.log следующее:

Nov  8 17:26:14 [11451:1] rpc DEBUG mgrrpc_unix.cpp:57 HTTP/1.1 403 Forbidden
Nov  8 17:26:14 [11451:1] rpc DEBUG mgrrpc_unix.cpp:57 Cache-Control: no-cache
Nov  8 17:26:14 [11451:1] rpc DEBUG mgrrpc_unix.cpp:57 Pragma: no-cache
Nov  8 17:26:14 [11451:1] rpc DEBUG mgrrpc_unix.cpp:57 Connection: close
Nov  8 17:26:14 [11451:1] rpc DEBUG mgrrpc_unix.cpp:57 Content-Type: text/html; charset=UTF-8
Nov  8 17:26:14 [11451:1] rpc DEBUG mgrrpc_unix.cpp:57 Content-Length: 2906
Nov  8 17:26:14 [11451:1] rpc DEBUG mgrrpc_unix.cpp:57 Closing connection 0
Nov  8 17:26:14 [11451:1] omesia DEBUG omesia.cpp:191 <!DOCTYPE html>
<html>
<head>
    <title>Ошибка</title>
    <meta http-equiv="pragma" content="no-cache"/>
    <meta http-equiv="cache-control" content="no-cache, must-revalidate"/>
    <meta http-equiv="cache-control" content="no-store, post-check=0, pre-check=0"/>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge;chrome=1"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE"/>
    <meta name="description" content=""/>
    <meta name="robots" content="none"/>
    <link rel="shortcut icon" href="https://gu-st.ru/static_errors/imperva/img/favicon.ico"/>
    <link type="text/css" rel="stylesheet" href="https://gu-st.ru/static_errors/imperva/css/error.css"/>
</head>
<body class="error-page">
<div class="baseheader-wrap simple">
    <div class="page-wrap baseheader">
        <a href="/" class="logo" title="">
            ГОСУСЛУГИ
        </a>
        <div class="slogan">
            Доступ к сервисам электронного правительства
        </div>
    </div>
</div>

Решение

Это означает, что доступ к сервису Госуслуг с IP-адреса сервера, на котором расположен BILLmanager, заблокирован. Доступ к Госуслугам возможен только с российских IP-адресов.

Пример настройки проксирования с помощью nginx. Подробнее см. в документации Nginx.

  1. На сервере с прокси:
    1. Добавьте в файл конфигурации nginx.conf:

      server {
          # TEST: https://esia-portal1.test.gosuslugi.ru
          # PROD: https://esia.gosuslugi.ru
          location = /gosuslugi/aas/oauth2/v2/ac {
              return 301 https://esia-portal1.test.gosuslugi.ru/aas/oauth2/v2/ac$is_args$args;
          }
          location ^~ /gosuslugi/ {
              rewrite  /gosuslugi(.*) $1 break;
              proxy_pass https://esia-portal1.test.gosuslugi.ru;
          }
      }
    2. Перезапустите nginx.
  2. В веб-интерфейсе BILLmanager:
    1. Перейдите в раздел ИнтеграцияМодулиАвторизация через ЕСИА → кнопка .
    2. В настройках интеграции в поле Госуслуги (ЕСИА) API URL укажите адрес в формате:
      • https://{PROXY_HOST}/gosuslugi — тестовое окружение;
      • https://{PROXY_HOST}/gosuslugi/aas/oauth2/v2/ac — продуктовое окружение.
    3. Нажмите Ок.