Статус: Участник
Группы: Участники
Зарегистрирован: 24.02.2021(UTC) Сообщений: 19 Откуда: Сыктывкар Сказал(а) «Спасибо»: 5 раз
|
Здравствуйте! Пытаюсь наладить интеграцию с ГИС ЖКХ через их API + stunnel. И выходит ошибка Error 0x8009030e returned by VerifyCertChain. Установленный сертификат:
Код:***@***:~$ /opt/cprocsp/bin/amd64/certmgr -list -store uRoot
Certmgr 1.1 (c) "КРИПТО-ПРО", 2007-2021.
Программа для работы с сертификатами, CRL и хранилищами.
=============================================================================
1-------
Издатель : OGRN=1234567890123, INN=001234567890, STREET=ул. Сущёвский вал д. 18, C=RU, S=г. Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN="Тестовый УЦ ООО ""КРИПТО-ПРО"""
Субъект : CN=*.dom.test.gosuslugi.ru
Серийный номер : 0x7C000482982F34058BB3E15F22000100048298
SHA1 отпечаток : 42813b4de50f01bed7eb09c34add0c6c59d10cfd
Идентификатор ключа : 004a1ec97e91d91e20788b1b38f2da6f81cd6d61
Алгоритм подписи : ГОСТ Р 34.11-2012/34.10-2012 256 бит
Алгоритм откр. кл. : ГОСТ Р 34.10-2012 256 бит (512 бит)
Выдан : 27/01/2022 09:47:04 UTC
Истекает : 27/04/2022 09:57:04 UTC
Ссылка на ключ : Нет
URL сертификата УЦ : http://testgost2012.cryptopro.ru/CertEnroll/root2018.crt
OCSP URL : http://testgost2012.cryptopro.ru/ocsp2012g/ocsp.srf
OCSP URL : http://testgost2012.cryptopro.ru/ocsp2012gst/ocsp.srf
URL списка отзыва : http://testgost2012.cryptopro.ru/CertEnroll/!0422!0435!0441!0442!043e!0432!044b!0439%20!0423!0426%20!041e!041e!041e%20!0022!041a!0420!0418!041f!0422!041e-!041f!0420!041e!0022(1).crl
URL списка отзыва : http://testgost2012.cryptopro.ru/CertEnroll/testgost2012(1).crl
Назначение/EKU : 1.3.6.1.5.5.7.3.2 Проверка подлинности клиента
Настройки stunnel.conf:
Код:pid = /var/opt/cprocsp/tmp/stunnel_cli_pid.pid
output = /var/opt/cprocsp/tmp/stunnel_cli_out.log
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
debug = 7
[https]
client = yes
accept = localhost:8000
connect = sit01.dom.test.gosuslugi.ru:10081
CAFile = /home/***/my_certs/CA-SIT_2022.pem
cert = /home/***/my_certs/rezo.cer
verify = 3
Вывод log stunnel:
Код:2022.04.01 14:29:16 LOG5[2967:140095761159936]: Received signal 15; terminating
2022.04.01 14:29:16 LOG7[2967:140095761159936]: removing pid file /var/opt/cprocsp/tmp/stunnel_cli_pid.pid
2022.04.01 14:29:36 LOG5[3082:139719578312512]: stunnel 4.18 on x86_64-pc-linux-gnu
2022.04.01 14:29:36 LOG5[3082:139719578312512]: Threading:PTHREAD Sockets:POLL,IPv6
2022.04.01 14:29:36 LOG6[3082:139719578312512]: file ulimit = 1024 (can be changed with 'ulimit -n')
2022.04.01 14:29:36 LOG6[3082:139719578312512]: poll() used - no FD_SETSIZE limit for file descriptors
2022.04.01 14:29:36 LOG5[3082:139719578312512]: 0 clients allowed
2022.04.01 14:29:36 LOG7[3082:139719578312512]: FD 4 in non-blocking mode
2022.04.01 14:29:36 LOG7[3082:139719578312512]: FD 5 in non-blocking mode
2022.04.01 14:29:36 LOG7[3082:139719578312512]: FD 6 in non-blocking mode
2022.04.01 14:29:36 LOG7[3082:139719578312512]: SO_REUSEADDR option set on accept socket
2022.04.01 14:29:36 LOG7[3082:139719578312512]: https bound to 127.0.0.1:8000
2022.04.01 14:29:36 LOG7[3083:139719578312512]: Created pid file /var/opt/cprocsp/tmp/stunnel_cli_pid.pid
2022.04.01 14:29:48 LOG7[3083:139719578312512]: https accepted FD=7 from 127.0.0.1:45256
2022.04.01 14:29:48 LOG7[3083:139719575029504]: client start
2022.04.01 14:29:48 LOG7[3083:139719575029504]: https started
2022.04.01 14:29:48 LOG7[3083:139719575029504]: FD 7 in non-blocking mode
2022.04.01 14:29:48 LOG7[3083:139719575029504]: TCP_NODELAY option set on local socket
2022.04.01 14:29:48 LOG5[3083:139719575029504]: https connected from 127.0.0.1:45256
2022.04.01 14:29:48 LOG7[3083:139719575029504]: FD 12 in non-blocking mode
2022.04.01 14:29:48 LOG7[3083:139719575029504]: https connecting
2022.04.01 14:29:48 LOG7[3083:139719575029504]: connect_wait: waiting 10 seconds
2022.04.01 14:29:48 LOG7[3083:139719575029504]: connect_wait: connected
2022.04.01 14:29:48 LOG7[3083:139719575029504]: Remote FD=12 initialized
2022.04.01 14:29:48 LOG7[3083:139719575029504]: TCP_NODELAY option set on remote socket
2022.04.01 14:29:48 LOG7[3083:139719575029504]: start SSPI connect
2022.04.01 14:29:48 LOG5[3083:139719575029504]: try to read the client certificate
2022.04.01 14:29:48 LOG7[3083:139719575029504]: open file /home/***/my_certs/rezo.cer with certificate
2022.04.01 14:29:48 LOG7[3083:139719578312512]: Cleaning up the signal pipe
2022.04.01 14:29:48 LOG3[3083:139719575029504]: Credentials complete
2022.04.01 14:29:48 LOG7[3083:139719575029504]: 134 bytes of handshake data sent
2022.04.01 14:29:48 LOG5[3083:139719575029504]: 1303 bytes of handshake(in handshake loop) data received.
2022.04.01 14:29:48 LOG5[3083:139719575029504]: 4771 bytes of handshake data sent
2022.04.01 14:29:49 LOG5[3083:139719575029504]: 1440 bytes of handshake(in handshake loop) data received.
2022.04.01 14:29:49 LOG5[3083:139719575029504]: 1294 bytes of handshake(in handshake loop) data received.
2022.04.01 14:29:49 LOG5[3083:139719575029504]: Handshake was successful
2022.04.01 14:29:49 LOG5[3083:139719575029504]: PerformClientHandshake finish
2022.04.01 14:29:49 LOG5[3083:139719575029504]: Server subject: CN=*.dom.test.gosuslugi.ru
2022.04.01 14:29:49 LOG5[3083:139719575029504]: Server issuer: OGRN=1234567890123, INN=001234567890, STREET=ул. Сущёвский вал д. 18, C=RU, S=г. Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN="Тестовый УЦ ООО ""КРИПТО-ПРО"""
2022.04.01 14:29:49 LOG3[3083:139719575029504]: Error 0x10 ((unknown)) returned by CertVerifyCertificateChainPolicy!
2022.04.01 14:29:49 LOG3[3083:139719575029504]: Error 0x10 when validate certificate
2022.04.01 14:29:49 LOG3[3083:139719575029504]: Error 0x8009030e returned by VerifyCertChain
2022.04.01 14:29:49 LOG3[3083:139719575029504]: **** Error 0x8009030e authenticating server credentials!
2022.04.01 14:29:49 LOG5[3083:139719575029504]: Connection reset: 0 bytes sent to SSL, 0 bytes sent to socket
2022.04.01 14:29:49 LOG7[3083:139719575029504]: free Buffers
2022.04.01 14:29:49 LOG7[3083:139719575029504]: delete c->hContext
2022.04.01 14:29:49 LOG7[3083:139719575029504]: delete c->hClientCreds
2022.04.01 14:29:49 LOG5[3083:139719575029504]: incomp_mess = 0, extra_data = 0
2022.04.01 14:29:49 LOG7[3083:139719575029504]: https finished (0 left)
Так же хочу сказать, что проверил сертификаты на совпадение (т.е. установленный у меня и передаваемый с сервера ГИС ЖКХ) утилитой /opt/cprocsp/bin/amd64/csptest, сертификаты совпадают. Подскажите, пожалуйста, где я допустил ошибку и как её исправить? Спасибо!
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Добрый день. Вижу 2 варианта исправления: 1) verify=0 и не задаваться таким неблагодарным делом как проверка сертификата, выданного тестовым УЦ. Имитировать такое сложное API как у ГИС ЖКХ - сомневаюсь, что хакеры будут. Если работает, значит это подлинная ГИС ЖКХ. Серьезно, добавлять тестовый УЦ в доверенные представляет намного больший риск чем игнорировать проверку сертификата сервера. Отключение проверки действует только на конкретное соединение, а тестовый УЦ неизвестно где потом вылезет. Если ГИС ЖКХ реально хотят безопасности, то они должны серверный сертификат получить у Минцифры, а не вот эту подделку для галочки. Для тестовых соединений так точно стоит ставить verify=0, так как там реальных персональных данных не передается. 2) в строке CAFile по идее должен быть не сам сертификат сервера, а список сертификатов УЦ, выдавшего сертификат серверу. В случае тестового УЦ КриптоПро это обычно 2 сертификата от корневого и промежуточного УЦ. Обычно это выглядит как: Код:===== BEGIN TRUSTED CERTIFICATE =====
сертификат 1
===== END TRUSTED CERTIFICATE =====
===== BEGIN TRUSTED CERTIFICATE =====
сертификат 2
===== END TRUSTED CERTIFICATE =====
заголовки могут немного отличаться смотря какая версия stunnel и openssl Отредактировано пользователем 5 апреля 2022 г. 7:27:39(UTC)
| Причина: Не указана
|
1 пользователь поблагодарил two_oceans за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 24.02.2021(UTC) Сообщений: 19 Откуда: Сыктывкар Сказал(а) «Спасибо»: 5 раз
|
Автор: two_oceans Добрый день. Вижу 2 варианта исправления: 1) verify=0 и не задаваться таким неблагодарным делом как проверка сертификата, выданного тестовым УЦ. Имитировать такое сложное API как у ГИС ЖКХ - сомневаюсь, что хакеры будут. Если работает, значит это подлинная ГИС ЖКХ. Серьезно, добавлять тестовый УЦ в доверенные представляет намного больший риск чем игнорировать проверку сертификата сервера. Отключение проверки действует только на конкретное соединение, а тестовый УЦ неизвестно где потом вылезет. Если ГИС ЖКХ реально хотят безопасности, то они должны серверный сертификат получить у Минцифры, а не вот эту подделку для галочки. Для тестовых соединений так точно стоит ставить verify=0, так как там реальных персональных данных не передается. 2) в строке CAFile по идее должен быть не сам сертификат сервера, а список сертификатов УЦ, выдавшего сертификат серверу. В случае тестового УЦ КриптоПро это обычно 2 сертификата от корневого и промежуточного УЦ. Обычно это выглядит как: Код:===== BEGIN TRUSTED CERTIFICATE =====
сертификат 1
===== END TRUSTED CERTIFICATE =====
===== BEGIN TRUSTED CERTIFICATE =====
сертификат 2
===== END TRUSTED CERTIFICATE =====
заголовки могут немного отличаться смотря какая версия stunnel и openssl Большое спасибо! С verify=0 запросы проходят. Очень надеюсь, что на боевом сервере с verify=2 всё будет работать. :)
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close