πŸ” Как ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ сСртификатов для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π°

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ 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)

Π”Ρ€ΡƒΠ·ΡŒΡ ΠΏΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ этому ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒ доступнСС Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях.

НС ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈ ΠΌΠΈΠΌΠΎ ΠΆΠΌΠ°ΠΊΠ½ΠΈ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΡƒ Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½!