Saya memiliki file .crt bundel sertifikat.
melakukan openssl x509 -in bundle.crt -text -noout
hanya menunjukkan sertifikat root.
bagaimana saya melihat semua sertifikat lainnya?
http://comments.gmane.org/gmane.comp.encryption.openssl.user/43587 menyarankan ini satu-baris:
openssl crl2pkcs7 -nocrl -certfile CHAINED.pem | openssl pkcs7 -print_certs -text -noout
Ini memang bekerja untuk saya, tetapi saya tidak mengerti detailnya sehingga tidak bisa mengatakan apakah ada peringatan.
/etc/ssl/certs/ca-certificates.crt
dan mendapatkannyaunable to load PKCS7 object
Java
keytool
melakukan trik:Anotasi: Klik ganda Windows tidak berfungsi. Windows hanya membaca sertifikat pertama di keystore dan secara otomatis memperluas trustchain dari toko sertifikat bawaannya.
Hasil:
.crt
file tidak ditampilkan.crt
file. Ini bisa mengarah pada kesimpulan yang salah.sumber
Mengikuti FAQ ini membawa saya ke skrip perl ini , yang sangat sangat menyarankan kepada saya yang
openssl
tidak memiliki dukungan asli untuk menangani sertifikat ke- n dalam sebuah bundel, dan bahwa alih-alih kita harus menggunakan beberapa alat untuk mengiris-iris input sebelum memberi makan masing-masing sertifikat ke . Skrip perl ini, yang diadaptasi secara bebas dari skrip Nick Burch yang ditautkan di atas, tampaknya melakukan tugasnya:openssl
sumber
Oneliner yang menampilkan ringkasan setiap sertifikat dalam file.
(commando serupa disebutkan dalam jawaban lain, tetapi ini memberikan hasil yang lebih pendek, tanpa opsi --text).
contoh:
sumber
Ini mungkin tidak cantik, atau elegan, tapi itu cepat dan bekerja untuk saya menggunakan bash di linux, dan PEM diformat blok dalam file bundel ca-cert.
Anda dapat menempatkan semuanya satu baris, dan menyesuaikan opsi openssl agar sesuai. Saya benar-benar berharap ada solusi yang lebih elegan untuk ini, tetapi dalam hal ini saya pikir menemukan solusi yang lebih elegan akan membutuhkan waktu lebih lama daripada meretas solusi yang tidak elegan.
sumber
Karena tidak ada solusi berbasis awk:
Perintah pertama memecah bundel menjadi sertifikat dengan mencari BEGIN, dan END lines. Perintah kedua loop melalui sertifikat diekstraksi dan menunjukkannya.
sumber
Dalam bash biasanya hanya diperlukan satu baris (panjang) kode :-)
sumber
Perubahan kecil pada posting MadHatter untuk memungkinkan Anda menyalin / menempel langsung ke CLI. Saya juga menyertakan hash MD5, yang sangat membantu ketika memastikan sertifikat sudah benar. Baris stdin yang dikembalikan adalah hash md5 dari sertifikat.
Jika Anda ingin melihat hasil ringkas singkat yang bagus, Anda menggunakan versi ini. Bermanfaat jika Anda hanya memeriksa bahwa Anda telah memasukkan semua sertifikat Anda, tetapi tidak benar-benar memeriksa penggunaan / etc dari sertifikat tersebut.
Hanya dalam kasus versi openssl Anda tidak mendukung semua bendera di sini adalah beberapa egrep yang dapat Anda gunakan. Hal yang sama seperti yang pertama tetapi hanya pipa ke egrep.
Untuk memeriksa hash MD5 dari kunci pribadi Anda dapat melakukan hal berikut.
Referensi: SSL Shopper - Pencocokan Kunci Sertifikat
sumber
Inilah solusi berbasis awk yang tidak bergantung pada file perantara.
Ia bekerja dengan membaca blok PEM dari stdin dan menyatukan setiap blok ke baris base64 tunggal yang disandikan. Baris kemudian dibaca, didekodekan, dan diteruskan ke openssl sebagai sertifikat penyandian DER.
sumber
cat bundle.crt | awk -v cmd="openssl x509 -subject -noout" '/-----BEGIN/ { c = $0; next } c { c = c "\n" $0 } /-----END/ { print c|cmd; close(cmd); c = 0 }'
.Saya ingin memasukkan perintah perl idiomatik di sini:
Jika ada teks maka perubahan sedikit lebih kuat:
Cukup ubah nilai apa yang seharusnya dalam pernyataan kedua untuk mendapatkan sertifikat ke-n.
sumber
Metode Windows
Salah satu cara Anda dapat melihat seluruh rantai (di Windows tentu saja) untuk mengklik dua kali crt dan kemudian melihat pada tab Jalur Sertifikasi. Ini akan menampilkan seluruh rantai bahkan jika hanya ada Sertifikat Menengah, atau Root. Lihat tangkapan layar di bawah untuk detailnya. Jika Anda tidak menggunakan Windows, saya minta maaf atas kurangnya pengetahuan saya dengan varian Unix / Linux.
Catatan: ini dapat menyebabkan hasil yang salah jika sertifikat perantara ada di dalam keystore lokal Anda Windows akan menambahkannya secara otomatis dan tidak hanya memperlihatkan apa yang ada dalam bundel.
Linux (Metode Ubuntu)
Saya mengabaikan perintah awal Anda dan Anda memiliki satu hal yang tidak pada tempatnya. Perintah Anda akan terlihat seperti ini:
Sumber: http://manpages.ubuntu.com/manpages/hardy/man1/x509.1ssl.html
sumber
openssl
permintaannya memberikan kesalahan sintaksis, tetapi bahwa itu hanya mencantumkan sertifikat pertama dalam bundel. Kedua, kedua doa itu identik secara fungsional. Ketiga, dan mungkin yang paling penting, milik Anda juga tidak berfungsi, setidaknya untuk saya; itu juga, hanya mencantumkan sertifikat pertama dalam bundel.