Bagaimana saya bisa memverifikasi sertifikat SSL pada baris perintah?

52

Saya mencoba memvalidasi / memverifikasi bahwa kunci rsa, bundel, dan sertifikat yang disimpan di sini baik-baik saja. Mereka tidak dilayani oleh server web. Bagaimana saya bisa memverifikasi mereka?

xenoterracide
sumber
Lihatlah bagian openssl x509manual.
alex
Manual verifikasi OpenSSL dapat membantu Anda di sini. Juga, lihat halaman ini memiliki beberapa contoh yang sangat baik.
Stefan Lasiewski

Jawaban:

61

Dengan asumsi sertifikat Anda dalam format PEM, Anda dapat melakukan:

openssl verify cert.pem

Jika "ca-bundle" Anda adalah file yang berisi sertifikat perantara tambahan dalam format PEM:

openssl verify -untrusted ca-bundle cert.pem

Jika openssl Anda tidak diatur untuk secara otomatis menggunakan satu set sertifikat root yang diinstal (misalnya di /etc/ssl/certs), maka Anda dapat menggunakan -CApathatau -CAfileuntuk menentukan CA.

Andy
sumber
9
Peringatan, perintah openssl memverifikasi lebih permisif daripada yang Anda harapkan! Secara default, selain memeriksa CAfile yang diberikan, ia juga memeriksa CA yang cocok dalam direktori sertifikat sistem, misalnya / etc / ssl / certs. Untuk mencegah perilaku ini dan memastikan Anda memeriksa sertifikat CA khusus yang diberikan oleh CAfile, Anda juga harus memberikan opsi -CApath dengan direktori yang tidak ada, misalnya: openssl memverifikasi -verbose -CApath nosuchdir -CAfile cacert.pem server .crt
DSimon
2
Satu peringatan lebih lanjut: Jika Anda menggunakan -CApath nosuchdirkombinasi server.crt dan cacert.pem harus menyertakan root CA; Jika openssl hanya dapat bekerja sampai CA menengah dengan file-file itu maka itu akan mengeluh.
DSimon
Dikatakan tidak ada file seperti itu di /certs/. apakah ini akan menyebabkan masalah? karena saya ditumpuk dalam situasi di mana server saya bekerja, http curl bekerja, tetapi https .. curl mendapat kesalahan. di mana situs web berhenti berfungsi.
Giorgi Gvimradze
18

Berikut ini adalah satu-liner untuk memverifikasi rantai sertifikat:

openssl verify -verbose -x509_strict -CAfile ca.pem -CApath nosuchdir cert_chain.pem

Ini tidak perlu menginstal CA di mana pun.

Lihat https://stackoverflow.com/questions/20409534/how-does-an-ssl-certificate-chain-chain-bundle-work untuk detailnya.

Vadzim
sumber
1
Peringatan, opsi -CAfile lebih permisif daripada yang Anda harapkan. Lihat komentar saya pada jawaban yang diterima untuk detailnya.
DSimon
1
@ Dimon, saya menambahkan -CApath nosuchdirini untuk menjawab. Terima kasih.
Vadzim
Tidak masalah, senang membantu. :-) Satu peringatan yang saya temukan setelah memposting komentar saya sebelumnya: jika file yang ditentukan -CAfileitu sendiri hanya merupakan sertifikat perantara, maka openssl akan mengeluh. Ini adalah perilaku yang benar, karena verifymembutuhkan rantai lengkap sampai ke root CA, tetapi bisa menyesatkan.
DSimon
2
Versi saya ( OpenSSL 1.1.1 11 Sep 2018) membutuhkan argumen -CApathuntuk menjadi direktori yang ada.
Jake Cobb