Назад | Перейти на главную страницу

Разница между openssl verify и s_client

openssl verify дает мне код ошибки 20, тогда как s_client дает мне код возврата 1 и правильно получает корневой сертификат.

Может ли кто-нибудь указать мне, как проверить загруженный сертификат?

ychaouche@ychaouche-PC 10:30:22 ~/TMP/CERTS $ openssl s_client -CApath /etc/ssl/certs/ -connect domain.tld:993 
CONNECTED(00000003)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = domain.tld
verify return:1
---
Certificate chain
 0 s:/CN=domain.tld
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3

и проверить

ychaouche@ychaouche-PC 10:30:30 ~/TMP/CERTS $ openssl verify -CApath /etc/ssl/certs/ domaintld.crt 
domaintld.crt: CN = domain.tld
error 20 at 0 depth lookup:unable to get local issuer certificate
ychaouche@ychaouche-PC 10:31:21 ~/TMP/CERTS $ 

РЕДАКТИРОВАТЬ : нашел ответ на SO: https://stackoverflow.com/questions/28072021/discrepancy-between-openssl-verify-and-s-client-command

Я не знаю, что лучше: просто удалить этот вопрос или закрыть и добавить дублирующую ссылку на SO? (для других людей, ищущих по SF).

На это уже был дан ответ на SO. Из https://stackoverflow.com/questions/28072021/discrepancy-between-openssl-verify-and-s-client-command

openssl verify не ожидает, что сертификат будет содержать свою цепочку. Цепь нужно передать с помощью -untrusted аргумент. Вы можете передать туда тот же файл, доверие по-прежнему определяется путем нахождения доверенного корня в -CAfile/-CApath.

openssl verify -CApath /etc/ssl/certs -untrusted google_chain.pem google_chain.pem