Bagaimana cara mengekstrak semua subjek cacertfile dengan baris perintah openssl?

8

Apakah ada perintah openssl untuk mengekstrak semua subjek sertifikasi cacertfile (file yang berisi beberapa sertifikat seperti /etc/ssl/certs/ca-certificates.crt)?

Saya mencoba openssl x509 -in /etc/ssl/certs/ca-certificates.crt -noout -subjecttetapi itu hanya memberi saya subjek sertifikat pertama.

sebokopter
sumber

Jawaban:

5

Sayangnya saya tidak percaya OpenSSL bisa melakukan itu. OpenSSL mengasumsikan satu cert per file untuk tindakan x509.

Menurut situs ini Anda harus membaginya menjadi file individual. Dia bahkan menyediakan skrip perl yang akan membaginya untuk Anda. Anda kemudian dapat mengulang file, atau memodifikasi skrip perl untuk mengekstrak subjek secara langsung.

bahamat
sumber
1

Setel filevariabel untuk menunjuk ke file Anda, ubah perintah openssl dan Anda bisa melanjutkan:

file="your file name"; first=""; for i in $(grep -n CERT "${file}" | cut -f 1 -d:)
do
    if [ -z "$first" ]
    then
        first=$i
        continue
    fi
    sed -n "$first,${i}p" "${file}" | openssl x509 -noout -subject
    first=""
done
Alexei Volkov
sumber
Jawaban ini dapat ditingkatkan dengan menambahkan deskripsi tentang bagaimana perintah bekerja. Dan BTW, Anda tidak perlu kurung kurawal di ${file}.
G-Man Mengatakan 'Reinstate Monica'
skrip ini bekerja persis seperti yang diharapkan, ini mengambil setiap bagian sertifikat dari file (rantai) dan menunjukkan baris subjek
user906489
0

Untuk mencetak semua subjek dalam file CA:

openssl crl2pkcs7 -nocrl -certfile ca-certificates.crt | openssl pkcs7 -print_certs -text -noout | grep 'Subject:'

Chase T.
sumber