LINUX.ORG.RU

mTLS No required SSL certificate was sent

 , ,


0

1

Всем привет!

Сделали авторизация по клиентскому сертификату для партнера (они предоставили сертификат, который мы установили в nginx), проверили на своих самоподписанных сертах - без серта ошибка:

No required SSL certificate was sent

С сертом все ок, ресурс открывается. У партнера же ошибка:

No required SSL certificate was sent

Как можно в данной ситуации определить? на чьей стороне проблема? Как понять, что например, они делают запрос не в тем сертом, либо проблема на стороне сервера?

Можно tcpdump-ом посмотреть пакеты которые они шлют, сертификат там в незашифрованном виде должен присутствовать и будет видно есть ли он вообще и какой.

Ещё возможно у nginx можно логи отладоные включить но я не проверял.

А вообще 99% то проблема у них и они не шлют его.

firkax ★★★★★
()

они предоставили сертификат, который мы установили в nginx

Вот эта фраза мне сильно не нравится :)

Надеюсь, они предоставили сертификат УЦ для проверки в nginx, сертификат веб-сервера для nginx, и тестовый сертификат, чтобы ты смог проверить

проверили на своих самоподписанных сертах - без серта ошибка:

В смысле самоподписанных? А что будет проверять nginx?

router ★★★★★
()
Ответ на: комментарий от router

Причём тут сертификат веб-сервера? Речь про сертификат клиента.

firkax ★★★★★
()

Обычно перенастраивают сертификат клиента, после чего он работает нормально

maximumm
()

ssl_client_certificate указывает на сертификат(ы) CA, которые имеют право подписывать доверенные для nginx сертификаты.

Подозреваю, что вы идиоты не разобрались и положили самоподписанные сертификаты в этот файл (и поскольку они подписывают сами себя, это работает), а клиент ваш правильно всё делает и подписал сертификат на внешнем CA, чей сертификат вы не положили в файл. Потому и не работает.

ivlad ★★★★★
()
Ответ на: комментарий от ivlad

Серт прислали 1 в формате .cer Инсталлирую его в винду, потом экспортирую в DER, затеv конвертирую: openssl x509 -inform DER -in sign.cer -out sign.crt и этот файл подкидываю в nginx

DriverCat
() автор топика

Еще вопрос если попрошу их сделать openssl s_client -connect server.ru:443 -state -debug

как-то можно в выводе команды узнать шлют ли вообще они серт или нет?

DriverCat
() автор топика
Ответ на: комментарий от flant

Она как я понимаю показывает инфо по серту сервера, а мне нужно увидеть, что клиент шлет серт

DriverCat
() автор топика
Ответ на: комментарий от ya-betmen

Вот здесь вообще непонятно. То есть я могу увидеть их серт в логах nginx? Разве там не приватный ключ, который никому не передается?

DriverCat
() автор топика
Ответ на: комментарий от DriverCat

Разве [серверу передаётся] не приватный ключ, который никому не передается?

Ты просто так слова вместе миксуешь что ли?

t184256 ★★★★★
()
Ответ на: комментарий от DriverCat

Буду признателен, если подскажете нам что нужно сделать, чтобы все заработало

Положить в файл, на который указывает ssl_client_certificate, сертификат CA, который подписал сертификат партнёра.

ivlad ★★★★★
()
Ответ на: комментарий от ivlad

Его сконвертировали и положили, как выше написал, нам прислил один файл sign.cer. Вот сейчас пробую через curl с заведомо неверным сертом и ошибка другая: 400 The SSL certificate error

Отсюда вопрос: ошибка

No required SSL certificate was sent может однозначно означать, что клиент не посылает вообще сертификат?

DriverCat
() автор топика
Ответ на: комментарий от DriverCat

Нет почитай как это работает. Приватный ключ не передается но как сервер должен по твоему понять есть ли он у клиента?

ya-betmen ★★★★★
()
Ответ на: комментарий от DriverCat

ssl_client_certificate указывает на сертификат которым подписан сертфикат клиента. может быть несколько клиентов и их сертификаты подписаны одним какаим-то.

посмотри кем пописан клиентский сертификат

openssl x509 -in client.crt -text -noout | grep ‘Issuer\|Subject’

ssl_certificate server-bundel.crt

ssl_client_certificate сертфикат-которым-подписаны-сертфикаты-клиета.crt

server-bundel.crt - это сертификат сервера и еще сертификат которым он подписан.

на сервере нет никаких сертификатов клиена есть только то чем они подписаны.

cylon17
()
Последнее исправление: cylon17 (всего исправлений: 4)
Ответ на: комментарий от DriverCat

в сертификате только публичный ключ.

но когда ты устанавливаешь сертификат на клиенте в windows тебе к нему нужно добавить его приватный ключ и еще тот сертификат которым он подписан это все можно собирать в один psck11 файл.

cylon17
()
Ответ на: комментарий от cylon17

Так у меня нет самого клиентского сертификата, получается мне выслали только сертификат, которым подписан клиентский

DriverCat
() автор топика
Ответ на: комментарий от Dimez

`openssl x509 -inform DER -in sign.cer -out sign.crt

unable to load certificate 140677259015488:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:../crypto/asn1/tasn_dec.c:1149: 140677259015488:error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error:../crypto/asn1/tasn_dec.c:309:Type=X509

`

DriverCat
() автор топика
Ответ на: комментарий от Dimez

` openssl x509 -inform PEM -in sign.cer -out sign.crt

unable to load certificate 139709874611520:error:0909006C:PEM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: TRUSTED CERTIFICATE `

DriverCat
() автор топика
Ответ на: комментарий от ya-betmen

Добавил в log_format:

$ssl_client_s_dn($ssl_client_serial)"'

А как полностью серт получить в логе?

DriverCat
() автор топика

Может ли играть роль

 ssl_verify_depth

?

DriverCat
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.