Используйте утилиту openssl для отображения и проверки цепочки сертификатов для определенного домена.
Показать цепочку сертификатов
Показать цепочку сертификатов для example.org.
$ DOMAIN="example.org";
echo -n |
openssl s_client
-servername ${DOMAIN}
-connect ${DOMAIN}:443 2>/dev/null |
awk 'BEGIN{RS="---"} /Certificate chain/ {print}' |
awk NF
Certificate chain 0 s:/C=US/ST=California/L=Los Angeles/O=Internet Corporation for Assigned Names and Numbers/OU=Technology/CN=www.example.org i:/C=US/O=DigiCert Inc/CN=DigiCert SHA2 Secure Server CA 1 s:/C=US/O=DigiCert Inc/CN=DigiCert SHA2 Secure Server CA i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA 2 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA
Показать цепочку сертификатов для letsencrypt.org.
$ DOMAIN="letsencrypt.org";
echo -n |
openssl s_client
-servername ${DOMAIN}
-connect ${DOMAIN}:443 2>/dev/null |
awk 'BEGIN{RS="---"} /Certificate chain/ {print}' |
awk NF
Certificate chain 0 s:/CN=www.letsencrypt.org 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
Подтвердить сертификат
Проверим сертификат у example.org.
$ DOMAIN="example.org";
echo -n |
openssl s_client
-servername ${DOMAIN}
-connect ${DOMAIN}:443
-CApath /etc/ssl/certs/ 2>/dev/null |
awk '/Verify return code:/ {print gensub(/^ */,"","g",$0)}'
Verify return code: 0 (ok)
Образец неполного сертификата у incomplete-chain.badssl.com.
$ DOMAIN="incomplete-chain.badssl.com";
echo -n |
openssl s_client
-servername ${DOMAIN}
-connect ${DOMAIN}:443
-CApath /etc/ssl/certs/ 2>/dev/null |
awk '/Verify return code:/ {print gensub(/^ */,"","g",$0)}'
Verify return code: 21 (unable to verify the first certificate)