🔐 Как отобразить и проверить цепочку сертификатов для конкретного домена

Используйте утилиту 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)