Dari situs web, Anda dapat melakukan:
openssl s_client -showcerts -verify 5 -connect stackexchange.com:443 < /dev/null
Itu akan menunjukkan rantai sertifikat dan semua sertifikat yang disajikan server.
Sekarang, jika saya menyimpan kedua sertifikat itu ke file, saya dapat menggunakan openssl verify:
$ openssl verify -show_chain -untrusted dc-sha2.crt se.crt
se.crt: OK
Chain:
depth=0: C = US, ST = NY, L = New York, O = "Stack Exchange, Inc.", CN = *.stackexchange.com (untrusted)
depth=1: C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 High Assurance Server CA (untrusted)
depth=2: C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA
The -untrustedopsi digunakan untuk memberikan sertifikat menengah (s); se.crtadalah sertifikat untuk memverifikasi. Kedalaman = 2 hasil berasal dari toko CA sistem tepercaya.
Jika Anda tidak memiliki sertifikat perantara, Anda tidak dapat melakukan verifikasi. Itulah cara kerja X.509.
Tergantung pada sertifikat, itu mungkin berisi URI untuk mendapatkan perantara. Sebagai contoh, openssl x509 -in se.crt -noout -textmengandung:
Authority Information Access:
OCSP - URI:http://ocsp.digicert.com
CA Issuers - URI:http://cacerts.digicert.com/DigiCertSHA2HighAssuranceServerCA.crt
Itu "CA Issuers" URI menunjuk ke sertifikat menengah (dalam format DER, jadi Anda perlu menggunakannya openssl x509 -inform der -in DigiCertSHA2HighAssuranceServerCA.crt -out DigiCertSHA2HighAssuranceServerCA.pemuntuk mengubahnya untuk digunakan lebih lanjut oleh OpenSSL).
Jika Anda berlari openssl x509 -in /tmp/DigiCertSHA2HighAssuranceServerCA.pem -noout -issuer_hash Anda mendapatkan 244b5494yang Anda dapat mencari di CA toko sistem akar di /etc/ssl/certs/244b5494.0(hanya append .0ke nama).
Saya tidak berpikir ada perintah OpenSSL yang bagus dan mudah untuk melakukan semua itu untuk Anda.