Статус: Участник
Группы: Участники
Зарегистрирован: 10.08.2023(UTC) Сообщений: 14
|
Настроил nginx + криптопро по инструкции https://support.cryptopr...-c-podderzhkojj-gost-tlsПоявились вопросы, на которые так и не нашел ответа: 1. В инструкции указано Цитата:Для режима двусторонней авутентификации (MutualTLS) необходимо установить корневые сертификаты клиентов в хранилище TrustedCerts Дело в том, что мне там не нужны корневые сертификаты, мне нужны там конечные сертификаты конкретных клиентов, которых я хочу распознавать. При попытке добавить туда конечные сертификаты в логах появляется ошибка Код:CertCreateCertificateChainEngine failed: 0x800B0109
Can not initialize storage engine for server: all connections will fail!
Эта ошибка появляется сразу же при старте сервера, еще до коннектов клиентов. При этом Код:[quote]sudo -u nginx /opt/cprocsp/bin/amd64/certmgr -list -store uTrustedCerts -chain[/quote]
Код:Extended Key Usage : 1.3.6.1.5.5.7.3.2 Проверка подлинности клиента
1.3.6.1.5.5.7.3.4 Защищенная электронная почта
Certificate chain : Verified successfully.
#0:
Issuer : УЦ КРИПТО-ПРО (ГОСТ 2012)
Subject : УЦ КРИПТО-ПРО (ГОСТ 2012)
SHA1 Thumbprint : 425fe75d8f3b23b13c508ba834428d365c07436b
#1:
Subject : <клиент>
SHA1 Thumbprint : <отпечаток>
CRL также стоят Код:sudo -u nginx /opt/cprocsp/bin/amd64/certmgr -list -crl -store uTrustedCerts
Certmgr 1.1 (c) "Crypto-Pro", 2007-2021.
Program for managing certificates, CRLs and stores.
=============================================================================
1-------
Issuer : E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
ThisUpdate : 14/08/2023 05:50:03 UTC
NextUpdate : 15/08/2023 08:34:00 UTC
AuthKeyID : 1d5c58c03feb4407cf888dafae5382bb778ed464
При этом если добавить этот клиентский серт в хранилище uRoot, то ошибка уходит и сервер запускается. Вопрос: как мне адекватно организовать работу с конечными сертификатами клиентов, без добавления их в корневое хранилище uRoot. 2. Есть ли где-то документация по работе этих хранилищ, как происходит построение цепочек, где что ищется в какую очередь и какие параметры в ini \config\ всем этим управляют? Желательно обойтись при этом без обратного инжиниринга, strace, tcpdump и прочего.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 21.11.2010(UTC) Сообщений: 1,108
Сказал(а) «Спасибо»: 7 раз Поблагодарили: 153 раз в 138 постах
|
То, что вам не нужны чьи-то корневые сертификаты, ещё не означает, что корневые эти сертификаты не нужны вообще. Как минимум, требуются "корни доверия" (все уникальные корневые сертификаты из всех имеющихся пользовательских). Ещё понадобятся (уникальные) корневые сертификаты, как минимум OCSP-серверов из всех клиентских. Если вы не хотите видеть всё это в основной системе - попробуйте изолировать сервис nginx, например, средствами systemd.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.08.2023(UTC) Сообщений: 14
|
Я не против установки корневых сертификатов клиентских УЦ в uRoot, я не хочу их устанавливать в uTrustedCerts, так как мне там нужны конкретные клиентские серты, а не все серты, выпущенные этим УЦ. По поводу OCSP -- насколько я понял, его можно отключить через параметр tls_server_use_ocsp_extensions (нашел где-то в интернете), что я и сделал. Код:/opt/cprocsp/sbin/amd64/cpconfig -ini '\config\Parameters\tls_server_use_ocsp_extensions' -view
0
Мне пока непонятно почему в логах пишется Код:CertCreateCertificateChainEngine failed: 0x800B0109
Can not initialize storage engine for server: all connections will fail
Хотя цепочка вроде как выстроена.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 21.11.2010(UTC) Сообщений: 1,108
Сказал(а) «Спасибо»: 7 раз Поблагодарили: 153 раз в 138 постах
|
Тогда не надо мешать в одну кучу хранилище (конкретного) пользователя и хранилище системы. Сервис nginx работает, как я понимаю, от одноимённого пользователя? Ну так и устанавливайте сертификаты в хранилища этого пользователя: корневые в uRoot, промежуточные - в uCA. P.S. На вкус и цвет, конечно, все фломастеры разные, но проще, imho, установить требуемое в mRoot и mCA. P.P.S. Если отключать OCSP, то потребуется ещё скачивание и регулярная актуализация списков отзыва по всех "листовым" УЦ. Отредактировано пользователем 16 августа 2023 г. 16:00:31(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.08.2023(UTC) Сообщений: 14
|
Все так и сделано, как вы описываете Код:sudo -u nginx /opt/cprocsp/bin/amd64/certmgr -list -store uTrustedCerts -chain
Код:Issuer : E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
Subject : ---
Serial : ---
SHA1 Thumbprint : ---
SubjKeyID : ---
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 512 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits)
Not valid before : 22/11/2022 13:01:38 UTC
Not valid after : 22/11/2027 13:11:38 UTC
PrivateKey Link : No
OCSP URL : http://ocsp.cryptopro.ru/ocsp2012/ocsp.srf
CA cert URL : http://cpca20.cryptopro.ru/aia/1d5c58c03feb4407cf888dafae5382bb778ed464.crt
CDP : http://cdp.cryptopro.ru/cdp/1d5c58c03feb4407cf888dafae5382bb778ed464.crl
CDP : http://cpca20.cryptopro.ru/cdp/1d5c58c03feb4407cf888dafae5382bb778ed464.crl
Extended Key Usage : 1.3.6.1.5.5.7.3.2 Проверка подлинности клиента
1.3.6.1.5.5.7.3.4 Защищенная электронная почта
Certificate chain : Verified successfully.
#0:
Issuer : УЦ КРИПТО-ПРО (ГОСТ 2012)
Subject : УЦ КРИПТО-ПРО (ГОСТ 2012)
SHA1 Thumbprint : 425fe75d8f3b23b13c508ba834428d365c07436b
#1:
Subject : --
SHA1 Thumbprint : --
Код:
sudo -u nginx /opt/cprocsp/bin/amd64/certmgr -list -store uRoot
Код:
Issuer : E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
Subject : E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
Serial : 0x0317BE3301C1AC17A948CF46A8C4F46F4D
SHA1 Thumbprint : 425fe75d8f3b23b13c508ba834428d365c07436b
SubjKeyID : 1d5c58c03feb4407cf888dafae5382bb778ed464
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 512 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 512 бит (1024 bits)
Not valid before : 31/01/2021 18:30:28 UTC
Not valid after : 31/01/2036 18:30:28 UTC
PrivateKey Link : No
Код:sudo -u nginx /opt/cprocsp/bin/amd64/certmgr -list -store uTrustedCerts -crl
Код:Issuer : E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
ThisUpdate : 14/08/2023 05:50:03 UTC
NextUpdate : 15/08/2023 08:34:00 UTC
AuthKeyID : 1d5c58c03feb4407cf888dafae5382bb778ed464
Текст ошибки nginx есть выше -- не строится цепочка. В mRoot корневой серт тоже прописан.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 21.11.2010(UTC) Сообщений: 1,108
Сказал(а) «Спасибо»: 7 раз Поблагодарили: 153 раз в 138 постах
|
Я знаю два хранилища Root и CA - для корневых и промежуточных сертификатов, соответственно. TrustedCert, насколько я понимаю - хранилище "конечных" (пользовательских) сертификатов, которым требуется какая-то индивидуальная настройка доверия. А у вас, как я понимаю, в Trusted находится сертификат (тестового) удостоверяющего центра КРИПТОПРО. Я понимаю ваше нежелание помещать его в хранилище корневых сертификатов, но тут уже действует другое правило: не совмещайте тестовый стенд и промышленную среду.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.08.2023(UTC) Сообщений: 14
|
Код:
sudo -u nginx /opt/cprocsp/bin/amd64/certmgr -list -store uRoot
Код:
4-------
Issuer : OGRN=1234567890123, INN=001234567890, STREET=ул. Сущёвский вал д. 18, C=RU, S=г. Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN="Тестовый УЦ ООО ""КРИПТО-ПРО"""
Subject : OGRN=1234567890123, INN=001234567890, STREET=ул. Сущёвский вал д. 18, C=RU, S=г. Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN="Тестовый УЦ ООО ""КРИПТО-ПРО"""
Serial : 0x1D32B77C2A34ACBF41C701E98365832C
SHA1 Thumbprint : 5e680ac3aba6a1b65d4ac9080481db31b354ecad
SubjKeyID : 67b408fce4aa6d7f1120bd0b92e8709baa564325
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits)
Not valid before : 13/06/2023 12:07:41 UTC
Not valid after : 13/09/2023 12:17:41 UTC
PrivateKey Link : No
В TrustedCerts лежит один клиентский серт, его корень (УЦ КриптоПро) лежит в uRoot Тестовым УЦ подписан серверный серт, он работает нормально, проблема именно в клиентском хранилище (сертах) при mTLS. Если из TrustedCerts удалить клиентский серт -- сервер запускается без ошибок.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 10.11.2024(UTC) Сообщений: 5 Откуда: Красногорск Сказал(а) «Спасибо»: 2 раз
|
Такая же ошибка в точно таком же сценарии, разница лишь в том что патч свежий и nginx новее. Подскажите, как подготовить демостенд с mTLS на тестовых сертификатах, без ошибки как у ТС, требуется на демостенде иметь один доверенный серт и один левый, и чтобы оба серта были ГОСТ от УЦ Криптопро при этом. Или такой демо-стенд подготовить не получится ? А как быть с продом, если у разных клиентов будут разные серты но от одного УЦ ? Как одних пускать на сервер, а других не пускать по mTLS? Отредактировано пользователем 10 ноября 2024 г. 12:53:43(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 10.11.2024(UTC) Сообщений: 5 Откуда: Красногорск Сказал(а) «Спасибо»: 2 раз
|
Вопрос решился через фильтр
map $sspi_client_serial $authorized_client
так как клиентские (не корневые) сертификаты в TrustedCerts не принимаются (сервис переставал работать), а требовалось разграничить доступ по конкретным сертификатам клиентов.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close