74 lines
6.6 KiB
Text
74 lines
6.6 KiB
Text
Подписание (в автоматическом режиме) запросов в ЕСИА ключом ЭП.
|
||
|
||
Должно быть выполнено тестирование со следующими вариантами статуса сертификата ключа проверки ЭП:
|
||
|
||
1. Действительный сертификат компонента ervu-sign-module, изготовленный Удостоверяющим центром – запрос в ЕСИА должен быть успешно отправлен:
|
||
|
||
1.1. Установить сертификат в систему, согласно "Инструкции по установке".
|
||
|
||
1.2. Открыть приложение - запрос в ЕСИА должен быть успешно отправлен.
|
||
|
||
2. Проверка статуса сертификата не может быть выполнена, так как в Системе отсутствует CRL, соответствующий Удостоверяющему центру – запрос в ЕСИА не должен быть отправлен:
|
||
|
||
2.1. Удалить CRL, соответствующий Удостоверяющему центру, изготовившему сертификат компонента ervu-sign-module:
|
||
sudo -u ervu /opt/cprocsp/bin/amd64/certmgr -delete -crl -store ucache -all
|
||
sudo -u ervu /opt/cprocsp/bin/amd64/certmgr -delete -crl -store uca -all
|
||
|
||
2.2. Отключить доступ к УЦ (например, прописав в /etc/hosts недоступный ip-адрес для хоста УЦ, указанного в свойствах сертификата):
|
||
Пример /etc/hosts:
|
||
127.0.0.1 testgost2012.cryptopro.ru
|
||
|
||
2.3. Перезапустить сервис подписания ervu-sign-module, чтобы сбросить кэш:
|
||
sudo systemctl restart ervu-sign-module
|
||
|
||
2.4. Открыть приложение - запрос в ЕСИА не должен быть отправлен. Пользователю отобразится ошибка.
|
||
|
||
В логах ЛК РП должно быть следующее:
|
||
Caused by: java.lang.RuntimeException: 500 500 Internal Server Error
|
||
at ru.micord.ervu.security.esia.service.EsiaAuthService.errorHandler(EsiaAuthService.java:351) ~[classes/:1.10.0-SNAPSHOT]
|
||
at ru.micord.ervu.security.esia.service.EsiaAuthService.signMap(EsiaAuthService.java:340) ~[classes/:1.10.0-SNAPSHOT]
|
||
at ru.micord.ervu.security.esia.service.EsiaAuthService.generateAuthCodeUrl(EsiaAuthService.java:101) ~[classes/:1.10.0-SNAPSHOT]
|
||
|
||
В логах ervu-sign-module должно быть следующее:
|
||
WARN: The certificate is not trusted. CERT_TRUST_STATUS: '0x00000040'
|
||
ERROR: get_cert_chain exit with error
|
||
ERROR: sign_hash_data exit with error. Last error code: 0x00000000
|
||
ERROR: cryptopro_sign exit with error
|
||
ERROR: sign_content exit with error
|
||
ERROR: response status: '500 Internal Server Error'
|
||
|
||
CERT_TRUST_STATUS = 0x00000040 (CERT_TRUST_REVOCATION_STATUS_UNKNOWN) означает, что статус отзыва сертификата или одного из сертификатов в цепочке сертификатов неизвестен.
|
||
|
||
2.5. Восстановить доступ к УЦ. Все CRL будут автоматически установлены при следующих запросах на подпись.
|
||
|
||
3. Сертификат действителен, но выдан УЦ, корневой сертификат которого не установлен в системе – запрос в ЕСИА не должен быть отправлен:
|
||
|
||
3.1. Получить цепочку сертификатов и SHA1 отпечаток корневого сертификата УЦ:
|
||
sudo -u ervu /opt/cprocsp/bin/amd64/certmgr -list -thumbprint 1f5ab193354a7701e4964711163c6b46d4a361e0 -chain
|
||
|
||
Результатом команды будет цепочка сертификатов с перечнем их свойств, из которого необходимо получить значение поля "SHA1 отпечаток" для одного из корневых сертификатов.
|
||
|
||
3.2. Из Системы удалить корневой сертификат Удостоверяющего центра. Например, удалить сертификат Тестового УЦ ООО Крипто-Про, выполнив команду:
|
||
sudo /opt/cprocsp/bin/amd64/certmgr -delete -store mRoot -thumbprint 41dcbff2ae102339bcedd0d5100ffb8e6018353d
|
||
|
||
3.3. Открыть приложение - запрос в ЕСИА не должен быть отправлен. Пользователю отобразится ошибка.
|
||
|
||
В логах ЛК РП должно быть следующее:
|
||
Caused by: java.lang.RuntimeException: 500 500 Internal Server Error
|
||
at ru.micord.ervu.security.esia.service.EsiaAuthService.errorHandler(EsiaAuthService.java:351) ~[classes/:1.10.0-SNAPSHOT]
|
||
at ru.micord.ervu.security.esia.service.EsiaAuthService.signMap(EsiaAuthService.java:340) ~[classes/:1.10.0-SNAPSHOT]
|
||
at ru.micord.ervu.security.esia.service.EsiaAuthService.generateAuthCodeUrl(EsiaAuthService.java:101) ~[classes/:1.10.0-SNAPSHOT]
|
||
|
||
В логах ervu-sign-module должно быть следующее:
|
||
|
||
WARN: The certificate is not trusted. CERT_TRUST_STATUS: '0x00000020'
|
||
ERROR: get_cert_chain exit with error
|
||
ERROR: sign_hash_data exit with error. Last error code: 0x80092004
|
||
ERROR: cryptopro_sign exit with error
|
||
ERROR: sign_content exit with error
|
||
ERROR: response status: '500 Internal Server Error'
|
||
|
||
CERT_TRUST_STATUS = 0x00000020 (CERT_TRUST_IS_UNTRUSTED_ROOT) означает, что сертификат или цепочка сертификатов основана на ненадежном корневом сертификате.
|
||
|
||
3.4. Восстановить все корневые сертификаты, которые были удалены, выполнив для каждого команду от имени root. Для восстановления сертификата Тестового УЦ ООО Крипто-Про выполните команду:
|
||
sudo /opt/cprocsp/bin/amd64/certmgr -install -store mRoot -file ~/work/ervu/certs/lkrp-mnsv93/testgost2012\(10\).crt
|