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 -untrusted
opsi digunakan untuk memberikan sertifikat menengah (s); se.crt
adalah 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 -text
mengandung:
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.pem
untuk mengubahnya untuk digunakan lebih lanjut oleh OpenSSL).
Jika Anda berlari openssl x509 -in /tmp/DigiCertSHA2HighAssuranceServerCA.pem -noout -issuer_hash
Anda mendapatkan 244b5494
yang Anda dapat mencari di CA toko sistem akar di /etc/ssl/certs/244b5494.0
(hanya append .0
ke nama).
Saya tidak berpikir ada perintah OpenSSL yang bagus dan mudah untuk melakukan semua itu untuk Anda.