Soru Tüm ssl sertifikalarını bir pakette nasıl görüntüleyebilirim?


Sertifika paketi .crt dosyam var.

openssl x509 -in bundle.crt -text -noout sadece kök sertifikasını gösterir.

Diğer tüm sertifikaları nasıl görebilirim?


76
2018-04-23 18:15


Menşei




Cevaplar:


http://comments.gmane.org/gmane.comp.encryption.openssl.user/43587 bu tek liner önerir:

openssl crl2pkcs7 -nocrl -certfile CHAINED.pem | openssl pkcs7 -print_certs -text -noout

Gerçekten benim için çalıştı, ama ayrıntıları anlayamıyorum, herhangi bir uyarı olup olmadığını söyleyemem.


88
2018-04-25 06:27



Bu en iyi cevap - Aşırı öldürme Python çözümümü bile göndermeyeceğim! Her sertifika için konu / ihraççı bilgilerini almak için "-txt" i dışarıda bırakın. - Chris Wolf
Üzerinde denemiş /etc/ssl/certs/ca-certificates.crt ve var unable to load PKCS7 object - OrangeDog
Bu pkcs7 formatı için değil, soru x509 format demetleri ile ilgili mi? - Yetanotherjosh
Sadece pkcs7'yi ara ürün olarak kullanır. Giriş birleştirilmiş PEM. - Beni Cherniavsky-Paskin
Süpersin!!! - Jingguo Yao


Takip etme bu SSS bana yol açtı bu perl betiğiki bunu bana çok şiddetle tavsiye ediyor openssl işlemek için yerel destek yok ninci Bir sertifikada sertifika ve bunun yerine, her sertifikayı beslemeden önce girdiyi dilimlemek ve kesmek için bir araç kullanmalıyız openssl. Nick Burch'un yukarıdaki betikinden özgürce uyarlanan bu perl betiği işi yapıyor gibi görünüyor:

#!/usr/bin/perl
# script for splitting multi-cert input into individual certs
# Artistic Licence
#
# v0.0.1         Nick Burch <nick@tirian.magd.ox.ac.uk>
# v0.0.2         Tom Yates <tyates@gatekeeper.ltd.uk>
#

$filename = shift;
unless($filename) {
  die("You must specify a cert file.\n");
}
open INP, "<$filename" or die("Unable to load \"$filename\"\n");

$thisfile = "";

while(<INP>) {
   $thisfile .= $_;
   if($_ =~ /^\-+END(\s\w+)?\sCERTIFICATE\-+$/) {
      print "Found a complete certificate:\n";
      print `echo \'$thisfile\' | openssl x509 -noout -text`;
      $thisfile = "";
   }
}
close INP;

20
2018-03-27 13:29





Java'nın keytool hile yapar:

keytool -printcert -v -file <certs.crt>

Ek Açıklama: Windows doubleclick çalışmıyor. Windows, anahtar deposundaki yalnızca ilk sertifikayı okur ve güvenilir zinciri yerleşik yerleşik sertifika deposundan otomatik olarak genişletir.

Sonuçlar:

  1. İçindeki ilk sertifikanın ötesinde .crt dosya gösterilmiyor
  2. Sahip olduğunuzdan farklı bir güven zinciri görüntülenebilir. .crt dosya. Bu yanlış sonuçlara yol açabilir.

17
2017-09-03 07:18



Pencerelerdeki şeyi açıkladığın için teşekkürler. Bu gerçekten cehennemi kafa karıştırıcıydı. - Nick.McDermaid


Bu güzel veya zarif olmayabilir, ancak linux üzerinde bash ve bir ca-cert bundle dosyasında PEM biçimlendirilmiş blokları kullanarak benim için hızlı ve çalıştı.

while read line
do
    if [ "${line//END}" != "$line" ]; then
        txt="$txt$line\n"
        printf -- "$txt" | openssl x509 -subject -issuer -noout
        txt=""
    else
        txt="$txt$line\n"
    fi
done < /path/to/bundle/file

Tüm bir satırı koyabilirsiniz ve openssl seçeneklerini uygun şekilde ayarlayabilirsiniz. Gerçekten bunun için daha zarif bir çözüm olmasını isterdim, ama bu durumda daha zarif bir çözüm bulmanın, inandırıcı olanı kesmekten daha fazla zaman alacağını düşünürdüm.


3
2017-11-09 01:08





Awk tabanlı bir çözüm olmadığı için:

$ cat ca-bundle | awk '/BEGIN/ { i++; } /BEGIN/, /END/ { print > i ".extracted.crt" }'
$ ls *.extracted.crt | while read cert; do openssl x509 -in $cert -text -noout; done

İlk komut BEGIN ve END satırlarını arayarak gruplara ayrıldı. İkinci komut, çıkarılan sertifikalar arasında dolaşır ve bunları gösterir.


3
2018-04-19 06:55



Awk'deki yazdırma yönlendirme özelliği, gawk ve nawk'ta mevcuttur, ancak temel awk'ta yoktur. Ve böylece, bu Linux üzerinde çalışırdı (gawk awk olarak bağlanır), ancak temel awk olan OS X'de olmayabilir. - Raghu Dodda


Dosyadaki her sertifikanın bir özetini gösteren Oneliner.

openssl crl2pkcs7 -nocrl -certfile CHAINED.pem | openssl pkcs7 -print_certs -noout

(diğer cevapta sözü edilen benzer komut, ama bu --text seçeneği olmadan daha kısa çıktı verir).

örnek:

$ openssl crl2pkcs7 -nocrl -certfile bundled.crt | openssl pkcs7 -print_certs -noout

subject=/C=NL/postalCode=5705 CN/L=City/street=Example 20/O=Foobar B.V./OU=ICT/OU=Wildcard SSL/CN=*.example.com
issuer=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Organization Validation Secure Server CA

subject=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Organization Validation Secure Server CA
issuer=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority

subject=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority
issuer=/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Roo

3
2017-09-23 09:21



Bu daha iyi açıklamalara ihtiyaç duyar - Sven♦


Bash'da genellikle sadece bir (uzun) kod satırı gereklidir :-)

tfile=$( mktemp -u ) && \
csplit -z -q -f "$tfile" bundle.crt  '/----BEGIN CERTIFICATE-----/' '{*}' && \
find "${tfile%/*}" -name "${tfile##*/}*" -exec openssl x509 -noout -subject -in "{}" \; -delete

1
2017-10-23 00:59