ЕСИА#
Контейнер ключей для ЕСИА и Цифрового профиля#
Запросы на аутентификацию через внешний поставщики идентификации ЕСИА и ЦП ЕСИА должны быть подписаны электронной подписью с использованием контейнера ключей с алгоритмами ГОСТ Р 34.10-2012 и ГОСТ Р 34.11-2012. Для использования в Blitz Identity Provider необходим файловый контейнер ключа электронной подписи в одном из следующих форматов:
КриптоПро CSP (версия 4.0 или выше),
КриптоПро JCP 2.0.
Для получения контейнера ключей необходимо обратиться в аккредитованный удостоверяющий центр.
Внимание
В случае если контейнер ключей выпускается удостоверяющим центром на физический носитель, то важно указать, что контейнер ключей должен быть выпущен с экспортируемым закрытым ключом, чтобы его можно было использовать в Blitz Identity Provider.
После получения в аккредитованном удостоверяющем центре контейнера ключей его необходимо импортировать в хранилище ключей, используемое Blitz Identity Provider. Для этого можно или обратиться в техническую поддержку Blitz Identity Provider или воспользоваться одним из описанных далее в подразделах способов конвертации.
КриптоПро CSP на Windows#
Для конвертации контейнера КриптоПро CSP в Windows понадобятся:
ПК под управлением Windows с настроенным браузером Internet Explorer 11.
Платная утилита P12FromGostCSP.
Установленный на ПК криптопровайдер КриптоПро CSP (версия 4.0 и новее).
Инструкция по конвертации контейнера:
Установить на ПК под управлением Windows криптопровайдер КриптоПро CSP (версия 4.0 и новее). Установить закрытый ключ электронной подписи в реестр Windows. Для этого выполнить шаги:
запустить КриптоПро CSP;
выбрать вкладку Сервис и нажать на кнопку Посмотреть сертификаты в контейнере:
нажать на кнопку Обзор:
выбрать контейнер с ключом ГОСТ Р 34.10-2012:
в открывшемся окне убедиться, что выбран нужный ключевой контейнер и нажать далее:
в окне со свойствами сертификата нажать на кнопку Установить:
сообщение Сертификат был установлен в хранилище «Личные» текущего пользователя свидетельствует об успешном сохранении.
Экспортировать ключ КриптоПро из хранилища Windows в PKCS#12. Для этого приобрести и запустить утилиту P12FromGostCSP. Нужна специальная версия утилиты – рекомендуется проконсультироваться с технической поддержкой Blitz Identity Provider.
После запуска утилиты выполнить шаги:
выбрать сертификат:
задать пароль от создаваемого контейнера PKCS#12:
указать файл для сохранения PKCS#12. В качестве расширения обязательно указать
.pfx
:
Установить на ПК окружение Java (JRE) версии 8.
Импортировать ключ из PKCS#12 в BKS-хранилище с помощью бесплатной утилиты gost-keytool и актуальной версии библиотеки bcprov-jdk15on.
java -cp "gost-keytool.jar;bcprov-jdk15on-1.70.jar" ru.reaxoft.gost.Keytool import_pkcs12 --srckeystore gost.pfx --srcstorepass 12345678 --srcalias csp_exported --srckeypass 12345678 --destkeystore blitz-keystore.bks --deststoretype BKS --deststorepass pass --destalias gost2012 --destkeypass pass
В этой операции используются параметры:
srckeystore
– путь к файлу PKCS#12;srcstorepass
– пароль от контейнера PKCS#12 (был задан на шаге 2);srcalias
– имя ключа в контейнере PKCS#12. Нужно указать значениеcsp_exported
;srckeypass
– пароль к ключу в контейнере PKCS#12. Нужно указать то же самое значение, что и для параметраsrcstorepass
;destkeystore
– путь к файлу BKSblitz-keystore.bks
, взятому с сервера Blitz Identity Provider;deststoretype
– тип хранилища. Нужно указать значениеBKS
;deststorepass
– пароль к хранилищу BKS;destalias
– имя (alias
) ключа в BKS, например,gost2012
;destkeypass
– пароль к ключу в BKS. Нужно указать то же самое значение, что и для параметраdeststorepass
.
Заменить файл
blitz-keystore.bks
на сервере Blitz Identity Provider;Перезапустить приложения Blitz Identity Provider.
КриптоПро CSP на Linux#
Для конвертации контейнера КриптоПро CSP в Linux понадобятся:
ПК или сервер под управлением одного из следующих Linux: Astra Linux 1.7, РЕД ОС 7.3, Альт. В случае использование сервера рекомендуется использовать иной сервер, чем те, на которых развернут Blitz Identity Provider.
Бесплатная утилита CryptoPro PFX Decoder by li0ard.
Важно
Перед началом конвертации нужно сохранить контейнер ключей КриптоПро CSP в формат pfx
(файл sourcekey.pfx
) и сертификат открытого ключа в формат cer
(sourcecrt.cer
).
Инструкция по конвертации контейнера:
Переключить ОС на использование ГОСТ в библиотеке OpenSSL согласно инструкции для используемой ОС: Astra Linux, РЕД ОС 7.3, Альт. Инструкция далее приводится на примере РЕД ОС 7.3 с включенной настройкой для использования ГОСТ в OpenSSL.
Включить настройку ГОСТ в OpenSSL:
openssl-switch-config gost
Настроить зависимости (делается однократно перед первой конвертацией ключа на сервере):
Установка модуля
asn1
:pip3 install asn1
Установка модуля
pyderasn
:[fetch|wget] http://www.pyderasn.cypherpunks.ru/download/pyderasn-9.3.tar.zst [fetch|wget] http://www.pyderasn.cypherpunks.ru/download/pyderasn-9.3.tar.zst.asc gpg --verify pyderasn-9.3.tar.zst.asc pyderasn-9.3.tar.zst zstd -d < pyderasn-9.3.tar.zst | tar xf - cd pyderasn-9.3 python setup.py install
Установка
pygost
:[fetch|wget] http://www.pygost.cypherpunks.ru/pygost-5.12.tar.zst [fetch|wget] http://www.pygost.cypherpunks.ru/pygost-5.12.tar.zst.asc gpg --verify pygost-5.12.tar.zst.asc pygost-5.12.tar.zst zstd -d < pygost-5.12.tar.zst | tar xf - cd pygost-5.12 python setup.py install
Загрузить утилиту
CryptoPro PFX Decoder by li0ard
:[fetch|wget] https://raw.githubusercontent.com/li0ard/cpfx/pyderasn/cpfx.py [fetch|wget] https://raw.githubusercontent.com/li0ard/cpfx/pyderasn/schemas.py
Конвертировать контейнер ключа из формата
pfx
в форматPEM
с помощьюCryptoPro PFX Decoder by li0ard
:python cpfx.py sourcekey.pfx
Ответ утилиты будет содержать информацию о том, в какой файл был сохранен преобразованный контейнер. Например,
exported_4192476d-3e66-4963-8684-bd95d6be7967.pem
.Конвертировать сертификат открытого ключа из формата
DER
в форматPEM
c помощью OpenSSL:openssl x509 -in sourcecrt.cer -inform der -out sourcecrt.pem
Собрать новый pfx-контейнер из преобразованных ключа и сертификата:
openssl pkcs12 -export -in sourcecrt.pem -inkey 4192476d-3e66-4963-8684-bd95d6be7967.pem -out correct.pfx -name gost2012
Установить окружение Java (JRE) версии 8.
Импортировать ключ из
PKCS#12
в BKS-хранилище с помощью бесплатной утилиты gost-keytool и актуальной версии библиотеки bcprov-jdk15on.java -cp gost-keytool.jar:bcprov-jdk15on-1.70.jar ru.reaxoft.gost.Keytool import_pkcs12 --srckeystore correct.pfx --srcstorepass 1234 --srckeypass 1234 --destkeystore blitz-keystore.bks --deststoretype BKS --deststorepass pass --destalias gost2012 --destkeypass pass --srcalias gost2012
В этой операции используются параметры:
srckeystore
– путь к сконвертированному pfx-контейнеру (PKCS#12
);srcstorepass
– пароль от контейнераPKCS#12
;srcalias
– имя ключа в контейнереPKCS#12
. Нужно указать значениеgost2012
;srckeypass
– пароль к ключу в контейнереPKCS#12
. Нужно указать то же самое значение, что и для параметраsrcstorepass
;destkeystore
– путь к файлу BKSblitz-keystore.bks
, взятому с сервера Blitz Identity Provider;deststoretype
– тип хранилища. Нужно указать значениеBKS
;deststorepass
– пароль к хранилищу BKS;destalias
– имя (alias) ключа в BKS, например,gost2012
;destkeypass
– пароль к ключу в BKS.
Заменить файл
blitz-keystore.bks
на сервере Blitz Identity Provider;Перезапустить приложения Blitz Identity Provider.
КриптоПро JCP#
Для импорта контейнера в формате КриптоПРО JCP необходимо установить данный криптопровайдер и следовать инструкциям из официальной документации.
Вход через ЕСИА в режиме выбора организации#
Когда для входа в Blitz Identity Provider сконфигурирован внешний поставщик идентификации ЕСИА, то к обычному режиму входа пользователя можно сконфигурировать следующие дополнительные возможности:
Отображение пользователю экрана выбора режима входа и организации, если вошедший через ЕСИА пользователь имеет в ЕСИА роли сотрудника индивидуального предпринимателя, юридического лица или органа государственной власти.
Получение из ЕСИА сведений о выбранной при входе организации, автоматическое создание на основе этих сведений в LDAP-хранилище группы пользователей с атрибутами, соответствующими организации (если соответствующая организации группа не найдена в момент входа), добавление пользователя в созданную (или найденную) группу пользователей.
Обновление атрибутов группы пользователя значениями атрибутов организации из ЕСИА в момент входа, если атрибуты в ЕСИА изменились.
Возможность добавления в маркер доступа и маркер обновления сведений о выбранной в момент входа пользователя роли в ЕСИА (физическое лицо, индивидуальный предприниматель, должностное лицо юридического лица, должностное лицо органа государственной власти).
Для настройки режимов входа необходимо предварительно настроить в Blitz Identity Provider использование групп доступа и вход через ЕСИА. После этого необходимо в конфигурационном файле в секции blitz.prod.local.idp.federation
в блоке esia
создать дополнительный блок настроек org
следующего вида:
"federation" : {
"points" : {
"esia" : [
{
…
"org" : {
"embeds" : [
"documents.elements-1",
"addresses.elements-1",
"contacts.elements-1"
],
"group" : {
"id" : "${org.oid}",
"mapping" : [
{
"attr" : "org_ogrn",
"master" : true,
"value" : "${org.ogrn}"
},
{
"attr" : "org_inn",
"master" : true,
"value" : "${org.inn}"
},
{
"attr" : "org_fullname",
"master" : true,
"value" : "${org.fullName-}"
},
{
"attr" : "org_shortname",
"master" : true,
"value" : "${org.shortName-}"
},
{
"attr" : "org_type",
"master" : true,
"value" : "${org.type-}"
},
{
"attr" : "org_oktmo",
"master" : true,
"value" : "${org.oktmo-}"
},
{
"attr" : "org_leg",
"master" : true,
"value" : "${org.leg-}"
},
{
"attr" : "org_kpp",
"master" : true,
"value" : "${org.kpp-}"
},
{
"attr" : "org_phone",
"master" : true,
"value" : "${org.phone-}"
},
{
"attr" : "org_email",
"master" : true,
"value" : "${org.email-}"
},
{
"attr" : "org_fax",
"master" : true,
"value" : "${org.fax-}"
},
{
"attr" : "org_agencytype",
"master" : true,
"value" : "${org.agencyType-}"
},
{
"attr" : "org_agencyterrange",
"master" : true,
"value" : "${org.agencyTerRange-}"
},
{
"attr" : "org_address_post",
"master" : true,
"value" : "${org.postAddress-}"
},
{
"attr" : "org_address_leg",
"master" : true,
"value" : "${org.legalAddress-}"
}
],
"matchingRules" : [
[
{
"attr" : "id",
"value" : "${org.oid}"
}
]
],
"profile" : "orgs"
},
"scopes" : [
"http://esia.gosuslugi.ru/org_addrs",
"http://esia.gosuslugi.ru/org_leg",
"http://esia.gosuslugi.ru/org_oktmo",
"http://esia.gosuslugi.ru/org_inn",
"http://esia.gosuslugi.ru/org_type",
"http://esia.gosuslugi.ru/org_kpp",
"http://esia.gosuslugi.ru/org_ctts",
"http://esia.gosuslugi.ru/org_agencyterrange",
"http://esia.gosuslugi.ru/org_ogrn",
"http://esia.gosuslugi.ru/org_shortname",
"http://esia.gosuslugi.ru/org_fullname",
"http://esia.gosuslugi.ru/org_agencytype",
"http://esia.gosuslugi.ru/org_grps"
]
},
…
]
}
}
В добавленном блоке нужно скорректировать:
набор получаемых из ЕСИА сведений об организации и их маппинг на атрибуты группы пользователей (блок
group.mapping
), признакомmaster
отметить те атрибуты, которые должны перезаписываться в группе пользователей при каждом обновлении из ЕСИА, полученном в момент входа;набор запрашиваемых в ЕСИА разрешений (настройка
scopes
).
Если необходимо передавать в маркер идентификации и маркер доступа сведения о текущей выбранной организации и о роли пользователя в ЕСИА, то необходимо настроить соответствие необходимых атрибутов ЕСИА сессионным утверждениям в Blitz Identity Provider. Это выполняется с помощью настройки claims
в блоке настроек ЕСИА:
"federation" : {
"points" : {
"esia" : [
{
…
"claims" : [
{
"name" : "org_id",
"value" : "org.oid"
},
{
"name" : "global_role",
"value" : "globalRole"
},
{
"name" : "org_shortname",
"value" : "org.shortName"
},
{
"name" : "org_fullname",
"value" : "org.fullName"
},
{
"name" : "org_type",
"value" : "org.type"
},
{
"name" : "org_ogrn",
"value" : "org.ogrn"
},
{
"name" : "org_inn",
"value" : "org.inn"
},
{
"name" : "org_oktmo",
"value" : "org.oktmo"
},
{
"name" : "org_groups",
"value" : "org.groupNames"
},
}
},
…
]
}
}
Добавление параметров в вызов ЕСИА#
Blitz Identity Provider позволяет добавлять в вызов сервиса аутентификации ЕСИА следующие параметры:
obj_type
– тип пользователя;roles
– тип роли пользователя.
Для того чтобы включить передачу параметров, выполните следующие действия:
Откройте файл конфигурации
/usr/share/identityblitz/blitz-config/blitz.conf
.В секции
blitz.prod.local.idp.federation.points.esia.authExtParams
(настройки ЕСИА) илиblitz.prod.local.idp.federation.points.esiadp.authExtParams
(цифрового профиля ЕСИА) укажите параметры для добавления в вызов сервиса аутентификации. Параметры необходимо перечислить в виде<имя параметра>
:<строковое значение параметра>
. Например, для передачи параметровobj_type=P+L&roles=E+C
, нужно добавить в файл конфигурации соответствующего поставщика идентификации раздел вида:"authExtParams": { "obj_type": "P L", "roles": "E C" },