Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline 2bione  
#1 Оставлено : 1 октября 2022 г. 19:39:17(UTC)
2bione

Статус: Новичок

Группы: Участники
Зарегистрирован: 29.09.2022(UTC)
Сообщений: 5
Российская Федерация
Откуда: Саратов

Сказал(а) «Спасибо»: 3 раз
Добрый день

Нужно настроить шифрование запросов по ГОСТ-34.10-2012 через Stunnel для бюро кредитных историй ОКБ. Конфиг настроил по инструкции, сертификат добавил и привязал его к контейнеру, пароль с контейнера удалил.

При выполнении curl в ответ получаю такую ошибку
curl: (58) Problem with the local SSL certificate
Из запроса я убрал токены для работы с сервером, но с ним такой же ответ. То есть как я понимаю нет корректного соединения с сервером для работы уже серверной части запроса.



Но сертификаты все вроде бы установлены как корневые так и клиента, который был так же привязан к контейнеру с закрытой частью.

/opt/cprocsp/bin/amd64/certmgr -list


/opt/cprocsp/bin/amd64/certmgr -l -store uRoot


При попытке сделать запрос, в логе Stunnel пишется вот это, ошибок тут я не увидел, по этому не могу понять куда дальше копать. Подскажите, пожалуйста, так как на той стороне мне сообщают что все работает корректно и проблема в моих настройках.



Конфиu stunnel


в hosts так же указал домен БКИ на ip локалки
127.0.0.1 scores-test.bki-okb.com


Версию сейчас поставил 4.0 так как на стороне сервера такая же, но до этого пробовал и на последней, результат был таким же при запросах.
dpkg -l | grep cprocsp


Если нужно еще какие-то конфиги или вывод команд прислать, то я готов )
Сервер тестовый поднял на ОС Debian 11


П.С. Если получится решить вопрос в долгу не останусь Angel
Offline 2bione  
#2 Оставлено : 3 октября 2022 г. 14:52:46(UTC)
2bione

Статус: Новичок

Группы: Участники
Зарегистрирован: 29.09.2022(UTC)
Сообщений: 5
Российская Федерация
Откуда: Саратов

Сказал(а) «Спасибо»: 3 раз
Может быть причина ошибок в том, что мы использовали для тестирования пробную версию Крипто про ?
Online Андрей Русев  
#3 Оставлено : 3 октября 2022 г. 16:05:51(UTC)
Русев Андрей

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,499

Сказал(а) «Спасибо»: 42 раз
Поблагодарили: 607 раз в 420 постах
Здравствуйте.
Похоже, вам нужен другой корневой. Как узнать правильный: делаете пробное подключение с опцией -savecert, чтобы сохранить сертификаты, полученные от сервера:
Код:
user@test-x64-astra212:~$ /opt/cprocsp/bin/amd64/csptest -tlsc -server scores-test.bki-okb.com -port 443 -file /api/v1/products/ch/strategies/person_gen7_cl_v1 -nosave -v -savecert /tmp/t.p7b
...
Server certificate:
Subject: E=pki@okb-bki.ru, C=RU, L=Moscow, O=UCB, CN=*.bki-okb.com
Valid  : 21.12.2021 11:45:23 - 21.12.2022 11:55:23 (UTC)
Issuer : E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
PrivKey: 21.12.2021 11:45:23 - 21.12.2022 11:45:23 (UTC)
Error 0x800b0109 (CERT_E_UNTRUSTEDROOT) returned by CertVerifyCertificateChainPolicy!
../../../../CSPbuild/CSP/samples/csptest/WebClient.c:1076:Error authenticating server credentials!
Error 0x800b0109: Цепочка сертификатов обработана правильно, но обработка прервана на корневом сертификате, у которого отсутствует отношение доверия с поставщиком доверия.
Total: SYS: 0,000 sec USR: 0,080 sec UTC: 0,110 sec
[ErrorCode: 0x800b0109]

Дальше их можно посмотреть:
Код:
user@test-x64-astra212:~$ /opt/cprocsp/bin/amd64/certmgr -list -file /tmp/t.p7b
Certmgr 1.1 (debug version) (c) "КРИПТО-ПРО", 2007-2022.
Программа для работы с сертификатами, CRL и хранилищами.
=============================================================================
1-------
Издатель            : E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
Субъект             : E=pki@okb-bki.ru, C=RU, L=Moscow, O=UCB, CN=*.bki-okb.com
Серийный номер      : 0x03027CC40005AE9FA84C803C6E7AB2B403
SHA1 отпечаток      : 00f27f7de78b458ba509b8168a123d25ca5bbf86
Идентификатор ключа : 8942ab32796463da15da52f82fc31cdbe2bc973c
Алгоритм подписи    : ГОСТ Р 34.11-2012/34.10-2012 512 бит
Алгоритм откр. кл.  : ГОСТ Р 34.10-2012 256 бит (512 бит)
Выдан               : 21/12/2021 11:45:23 UTC
Истекает            : 21/12/2022 11:55:23 UTC
Ссылка на ключ      : Нет
OCSP URL            : http://ocsp.cryptopro.ru/ocsp2012/ocsp.srf
URL сертификата УЦ  : http://cpca20.cryptopro.ru/aia/1d5c58c03feb4407cf888dafae5382bb778ed464.crt
URL списка отзыва   : http://cdp.cryptopro.ru/cdp/1d5c58c03feb4407cf888dafae5382bb778ed464.crl
URL списка отзыва   : http://cpca20.cryptopro.ru/cdp/1d5c58c03feb4407cf888dafae5382bb778ed464.crl
Назначение/EKU      : 1.3.6.1.5.5.7.3.1 Проверка подлинности сервера
=============================================================================

[ErrorCode: 0x00000000]

Качаем "URL сертификата УЦ":
Код:
user@test-x64-astra212:~$ /opt/cprocsp/bin/amd64/curl http://cpca20.cryptopro.ru/aia/1d5c58c03feb4407cf888dafae5382bb778ed464.crt -o /tmp/root.cer
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   956  100   956    0     0  39833      0 --:--:-- --:--:-- --:--:-- 39833

Ставим нужный корень (в вашей выдаче не было корневого с отпечатком 425fe75d8f3b23b13c508ba834428d365c07436b):
Код:
user@test-x64-astra212:~$ /opt/cprocsp/bin/amd64/certmgr -inst -store uroot  -file /tmp/root.cer
Certmgr 1.1 (debug version) (c) "КРИПТО-ПРО", 2007-2022.
Программа для работы с сертификатами, CRL и хранилищами.
Идёт установка:
=============================================================================
1-------
Издатель            : E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
Субъект             : E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
Серийный номер      : 0x0317BE3301C1AC17A948CF46A8C4F46F4D
SHA1 отпечаток      : 425fe75d8f3b23b13c508ba834428d365c07436b
Идентификатор ключа : 1d5c58c03feb4407cf888dafae5382bb778ed464
Алгоритм подписи    : ГОСТ Р 34.11-2012/34.10-2012 512 бит
Алгоритм откр. кл.  : ГОСТ Р 34.10-2012 512 бит (1024 бит)
Выдан               : 31/01/2021 18:30:28 UTC
Истекает            : 31/01/2036 18:30:28 UTC
Ссылка на ключ      : Нет
=============================================================================
CPCSP: Внимание: установка корневого сертификата с неподтвержденным отпечатком представляет риск для безопасности. Вы хотите установить этот сертификат?
Субъект: УЦ КРИПТО-ПРО (ГОСТ 2012)
Отпечаток (sha1): 425FE75D8F3B23B13C508BA834428D365C07436B
(o)ОК, (c)Отмена
o

[ErrorCode: 0x00000000]

Перепроверяем, что теперь TLS-соединение не обрывается на проверке цепочки:
Код:
user@test-x64-astra212:~$ /opt/cprocsp/bin/amd64/csptest -tlsc -server scores-test.bki-okb.com -port 443 -file /api/v1/products/ch/strategies/person_gen7_cl_v1 -nosave -v
...

Server certificate:
Subject: E=pki@okb-bki.ru, C=RU, L=Moscow, O=UCB, CN=*.bki-okb.com
Valid  : 21.12.2021 11:45:23 - 21.12.2022 11:55:23 (UTC)
Issuer : E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
PrivKey: 21.12.2021 11:45:23 - 21.12.2022 11:45:23 (UTC)

SECPKG_ATTR_STREAM_SIZES: Header: 5, Trailer: 4, MaxMessage: 16384
SECPKG_ATTR_STREAM_SIZES: Buffers: 4, BlockSize: 1

SECPKG_ATTR_SIZES: MaxToken: 16384
SECPKG_ATTR_SIZES: MaxSignature: 4
SECPKG_ATTR_SIZES: BlockSize: 1
SECPKG_ATTR_SIZES: SecurityTrailer: 9

HTTP request: GET /api/v1/products/ch/strategies/person_gen7_cl_v1 HTTP/1.1
User-Agent: Webclient
Accept:*/*
Host: scores-test.bki-okb.com
Connection: close


Sending plaintext: 150 bytes
168 bytes of application data sent
13 bytes of (encrypted) application data received
Decrypted data: 0 bytes
Server requested renegotiate!
156 bytes of handshake data sent
1368 bytes of handshake data received
2736 bytes of handshake data received
2736 bytes of handshake data received
1564 bytes of handshake data received
Server requested new credentials!

Trying to create new credential
...

У меня клиентского сертификата для соединения нет, поэтому соединение закономерно завершается ошибкой:
Код:

...
Issuers: 34, Length: 6983 bytes

Can not find client certificate with received issuers, trying server certificate Issuer Name
Issuer  0: E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
Issuers: 1, Length: 190 bytes
../../../../CSPbuild/CSP/samples/csptest/WebClient.c:3118:Error finding cert chain
Error 0x80092004: Объект или свойство не найдено.
239 bytes of handshake data sent
35 bytes of handshake data received
Handshake was successful
1398 bytes of (encrypted) application data received
Decrypted data: 1389 bytes
No data in socket: OK if file is completely downloaded
Reply status: HTTP/1.1 403 Forbidden
../../../../CSPbuild/CSP/samples/csptest/WebClient.c:2694:Bad HTTP status.
Error 0x80092004: Объект или свойство не найдено.
HttpsGetFile: 0x00000193
../../../../CSPbuild/CSP/samples/csptest/WebClient.c:1093:Error fetching file from server.
Error 0x193:
Total: SYS: 0,000 sec USR: 0,110 sec UTC: 0,160 sec
[ErrorCode: 0x00000193]

Но у вас должно соединяться.
Официальная техподдержка. Официальная база знаний.
thanks 2 пользователей поблагодарили Русев Андрей за этот пост.
2bione оставлено 04.10.2022(UTC), Саша Че оставлено 22.05.2023(UTC)
Offline 2bione  
#4 Оставлено : 3 октября 2022 г. 21:15:14(UTC)
2bione

Статус: Новичок

Группы: Участники
Зарегистрирован: 29.09.2022(UTC)
Сообщений: 5
Российская Федерация
Откуда: Саратов

Сказал(а) «Спасибо»: 3 раз
Автор: Андрей Русев Перейти к цитате
Ставим нужный корень (в вашей выдаче не было корневого с отпечатком 425fe75d8f3b23b13c508ba834428d365c07436b):


Тот который вы указали у меня он был установлен и в первом сообщении, он был в спойлере (/opt/cprocsp/bin/amd64/certmgr -l -store uRoot) под номером 4. Тем не менее, я еще раз скачал корневой сертификат по вашей инструкции и установил его повторно.

Автор: Андрей Русев Перейти к цитате
Перепроверяем, что теперь TLS-соединение не обрывается на проверке цепочки:


Вот тут я получил такой же результат при условии что в hosts я закомментировал хост scores-test.bki-okb.com.
Я верно понимаю, чтобы мне сделать корректный запрос в ОКБ надо его делать через stunnel для шифрования клиентским ключем и при этом, хост scores-test.bki-okb.com нужно прописать на адрес 127.0.0.1 ?

Забегая вперед я попробовал так сделать, то есть в hosts добавил 127.0.0.1 scores-test.bki-okb.com после запустил Stunnel c этим конфигом

Код:

pid=/var/opt/cprocsp/tmp/stunnel_serv.pid
output=/home/stunnel_serv.log
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
debug = 7

[https]
client = yes
accept = scores-test.bki-okb.com:8090
connect = 141.101.233.40:443
cert = /home/tuser1/client.cer
verify = 0



Далее сделал запрос curl на сервер ОКБ и получил такой результат с ошибкой

Код:

root@localhost:~# /opt/cprocsp/bin/amd64/curl -v https://scores-test.bki-okb.com:8090/api/v1/products/ch/strategies/person_gen7_cl_v1
*   Trying 127.0.0.1:8090...
* TCP_NODELAY set
* Connected to scores-test.bki-okb.com (127.0.0.1) port 8090 (#0)
* schannel: next InitializeSecurityContext failed: SEC_E_INVALID_TOKEN (0x80090308) - The token supplied to the function is invalid
* Closing connection 0
* schannel: shutting down SSL/TLS connection with scores-test.bki-okb.com port 8090
curl: (35) schannel: next InitializeSecurityContext failed: SEC_E_INVALID_TOKEN (0x80090308) - The token supplied to the function is invalid


И вот еще лог Stunnel-а
Код:

...: https accepted FD=7 from 127.0.0.1:38460
...: client start
...: https started
...: FD 7 in non-blocking mode
...: TCP_NODELAY option set on local socket
...: https connected from 127.0.0.1:38460
...: FD 12 in non-blocking mode
...: https connecting 
...: connect_wait: waiting 10 seconds
...: connect_wait: connected
...: Remote FD=12 initialized
...: TCP_NODELAY option set on remote socket
...: start SSPI connect
...: try to read the client certificate
...: open file /home/tuser1/client.cer with certificate
...: Credentials complete
...: 121 bytes of handshake data sent
...: 1467 bytes of handshake(in handshake loop) data received.
...: 215 bytes of handshake data sent
...: 31 bytes of handshake(in handshake loop) data received.
...: Handshake was successful
...: PerformClientHandshake finish 
...: Verify_level = 0, skipping Server certificate verification
...: add ssl read socket to pool
...: ssl_rd = 1, c->ssl_ptr = 0,c->sock_ptr=0,want_rd = 0
...: Enter pool section on transfer
...: !!!!!Call s_poll_wait with timeout = -1 ((sock_rd && ssl_rd)=1) c->ssl_ptr = 0 c->sock_ptr=0
...: data reciev from socket = 182
...: add ssl read socket to pool
...: ssl_rd = 1, c->ssl_ptr = 0,c->sock_ptr=182,want_rd = 0
...: Enter pool section on transfer
...: !!!!!Call s_poll_wait with timeout = -1 ((sock_rd && ssl_rd)=1) c->ssl_ptr = 0 c->sock_ptr=b6
...: SSPI_write start
...: SSPI_write data  is 
...: send all data after encrypt
...: data send to ssl_socket =182
...: add ssl read socket to pool
...: ssl_rd = 1, c->ssl_ptr = 0,c->sock_ptr=0,want_rd = 0
...: Enter pool section on transfer
...: !!!!!Call s_poll_wait with timeout = -1 ((sock_rd && ssl_rd)=1) c->ssl_ptr = 0 c->sock_ptr=0
...: SSPI_read start
...: recv ok on SSPI_read err= 514
...: Received 514  bytes from ssl socket
...: SSPI_read data in ssl_buff is HTTP
...: data read from ssl_sock =505
...: add ssl read socket to pool
...: ssl_rd = 1, c->ssl_ptr = 505,c->sock_ptr=0,want_rd = 0
...: add write socket to poll
...: Enter pool section on transfer
...: !!!!!Call s_poll_wait with timeout = -1 ((sock_rd && ssl_rd)=1) c->ssl_ptr = 1f9 c->sock_ptr=0
...: data send to socket = 505
...: SSPI_read start
...: recv ok on SSPI_read err= 0
...: recv return 0 and ask more but there is not complete data for decrypt. Peer disconnected?
...: SSPI_read: read socket closed
...: Socket write shutdown
...: c->ssl_ptr = 0
...: Enter pool section on transfer
...: !!!!!Call s_poll_wait with timeout = 60 ((sock_rd && ssl_rd)=0) c->ssl_ptr = 0 c->sock_ptr=0
...: data reciev from socket = 7
...: Enter pool section on transfer
...: !!!!!Call s_poll_wait with timeout = -1 ((sock_rd && ssl_rd)=0) c->ssl_ptr = 0 c->sock_ptr=7
...: SSPI_write start
...: SSPI_write data  is 
...: send all data after encrypt
...: data send to ssl_socket =7
...: Socket closed on read
...: SSL write shutdown
...: Enter pool section on transfer
...: !!!!!Call s_poll_wait with timeout = 60 ((sock_rd && ssl_rd)=0) c->ssl_ptr = 0 c->sock_ptr=0
...: 11 bytes of close_notify data sent
...: SSL_shutdown successfully sent close_notify
...: Connection closed: 189 bytes sent to SSL, 505 bytes sent to socket
...: free Buffers
...: delete c->hContext
...: delete c->hClientCreds
...: incomp_mess = 2, extra_data = 0
...: https finished (0 left)



Online Андрей Русев  
#5 Оставлено : 4 октября 2022 г. 13:30:19(UTC)
Русев Андрей

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,499

Сказал(а) «Спасибо»: 42 раз
Поблагодарили: 607 раз в 420 постах
Кажется, ваша ошибка в том, что вы ходите на локальный адрес (вход stunnel-а) по https, или я не уловил вашу задачу. То есть самый простой конфиг выглядел бы так (ноль в verify нехорошо использовать):
Код:
pid=/var/opt/cprocsp/tmp/stunnel_serv.pid
output=/home/stunnel_serv.log
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
debug = 7

[https]
client = yes
accept = 127.0.0.1:8080
connect = 141.101.233.40:443
cert = /home/tuser1/client.cer
verify = 2

обращения выглядели бы так (наш curl не требуется, так как TLS есть только от stunnel до НБКИ):
Код:
curl -v http://127.0.0.1:8080/api/v1/products/ch/strategies/person_gen7_cl_v1
Официальная техподдержка. Официальная база знаний.
thanks 1 пользователь поблагодарил Русев Андрей за этот пост.
2bione оставлено 04.10.2022(UTC)
Offline 2bione  
#6 Оставлено : 4 октября 2022 г. 15:51:13(UTC)
2bione

Статус: Новичок

Группы: Участники
Зарегистрирован: 29.09.2022(UTC)
Сообщений: 5
Российская Федерация
Откуда: Саратов

Сказал(а) «Спасибо»: 3 раз
Да Вы были правы, в с такими настройками запросы дошли до адресата и вернули понятный ответ от сервера. Спасибо, еще раз за помощь в настройке!

Еще такой вопрос по лицензии. Я верно понимаю, что нужно купить лицензию для этой ОС и указать ее на сервере? Если да, то можете подсказать какую лучше выбрать, чтобы эта интеграция работала бесперебойно?

Код:

root@localhost:~# /opt/cprocsp/sbin/amd64/cpconfig -license -view
License validity:
5050010037ELQF5H28KM8E6BA
Expires: 89 day(s)
License type: Demo.
Online Андрей Русев  
#7 Оставлено : 4 октября 2022 г. 21:01:32(UTC)
Русев Андрей

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,499

Сказал(а) «Спасибо»: 42 раз
Поблагодарили: 607 раз в 420 постах
Лицензии на КриптоПро CSP не разделяются по ОС. В целом вам нужна лицензия на КриптоПро CSP 5.0. Вопрос в том, серверная вам нужна лицензия или клиентская. Это определяется тем, как используется провайдер. Если это массовое обслуживание, то нужна серверная лицензия. Если обслуживается один пользователь, то клиентская. https://www.cryptopro.ru...80%d1%81%d0%b8%d0%b8+5.0
Официальная техподдержка. Официальная база знаний.
Offline 2bione  
#8 Оставлено : 5 октября 2022 г. 11:45:27(UTC)
2bione

Статус: Новичок

Группы: Участники
Зарегистрирован: 29.09.2022(UTC)
Сообщений: 5
Российская Федерация
Откуда: Саратов

Сказал(а) «Спасибо»: 3 раз
Мы планируем использовать лицензию для обмена данными по API с одним бюро кредитных историй. То есть, у нас будет обслуживаться в понимании лицензии КриптоПро всего 1 клиент, я верно понимаю ?

Если да, то вот такая лицензия подойдет для нас "Лицензия на право использования СКЗИ "КриптоПро CSP" версии 5.0 на одном рабочем месте" ?
Online Андрей Русев  
#9 Оставлено : 5 октября 2022 г. 12:40:19(UTC)
Русев Андрей

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,499

Сказал(а) «Спасибо»: 42 раз
Поблагодарили: 607 раз в 420 постах
Да, верно.
Официальная техподдержка. Официальная база знаний.
thanks 1 пользователь поблагодарил Русев Андрей за этот пост.
2bione оставлено 05.10.2022(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.