Фон
Я застрял в указательном пальце с поставщиком услуг с API, защищенным сертификатами SSL сервера и .
- Я создал CSR, получив сертификат от открытого CA (в данном случае GoDaddy) и предоставил поставщику услуг сертификат и CA-цепочку.
- Они предположительно загрузили сертификат CA и моего клиента в их шлюз.
- Я работаю с самыми базовыми уровнями тестов, используя
openssl s_client -connect ... -cert ... -key ...
- Поставщик сообщает мне, что их журналы указывают, что мои запросы не включают сертификат SSL клиента вообще.
- Как ни странно, соответствующий сертификат CA для моего сертификата отображается в списке "Идентификационные имена CA приемлемого клиента", предоставленные во время установления связи SSL.
- Для справки, самозаверяющий сертификат, который я создал и предоставленный им для тестирования, действительно работает правильно.
Запрос образца (неудачный)
[shell ~]$ openssl s_client -connect host:443 -cert cert_and_key.pem -key cert_and_key.pem -state -quiet
CONNECTED(00000003)
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:SSLv3 read server hello A
depth=2 **SNIP**
verify return:1
depth=1 **SNIP**
verify return:1
depth=0 **SNIP**
verify return:1
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server key exchange A
SSL_connect:SSLv3 read server certificate request A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client certificate A
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write certificate verify A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL3 alert read:fatal:unknown CA
SSL_connect:failed in SSLv3 read finished A
140011313276744:error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca:s3_pkt.c:1197:SSL alert number 48
140011313276744:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:184:
Мое чтение ошибки SSL3 alert read:fatal:unknown CA
заключается в том, что сервер не распознает эмитента сертификата, который я (фактически) предоставляю. Однако поставщик "заверяет" меня, что сертификаты ЦС загружаются должным образом, и я не смог их убедить в противном случае.
Вопрос
Итак, добавив другие (обширные) шаги по устранению неполадок, мне хотелось бы знать:
Есть ли какой-либо вывод, доступный из openssl s_client
, который окончательно показывает, что сертификат клиента не просто запрашивался сервером, а фактически был передан на сервер во время установления связи SSL?
Я экспериментировал с параметрами -state
, -msg
, -debug
и -trace
, но не имел фона, необходимого для интерпретации вывода.
Ответ EJP предполагает, что предоставленный образец вывода яв ляется достаточным доказательством с помощью write client certificate A
, но этот вывод появляется независимо от того, использовались ли опции -cert
в командной строке или нет, поэтому это не указывает на то, что сертификат послал.