שאלה כיצד להציג את כל תעודות SSL בחבילה?


יש לי קובץ צרור תעודה.

עושה openssl x509 -in bundle.crt -text -noout מציג רק את תעודת הבסיס.

איך אני רואה את כל תעודות אחרות?


76
2018-04-23 18:15






תשובות:


http://comments.gmane.org/gmane.comp.encryption.openssl.user/43587 מציע את זה אניה אחת:

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

זה באמת עבד בשבילי, אבל אני לא מבין את הפרטים אז לא יכול להגיד אם יש אזהרות.


88
2018-04-25 06:27



זוהי התשובה הטובה ביותר - אני אפילו לא לכתוב שלי מעל להרוג פייתון פתרון! לעזוב את "טקסט" רק כדי לקבל נושא / מידע מנפיק עבור כל אישור. - Chris Wolf
ניסיתי את זה /etc/ssl/certs/ca-certificates.crt וקיבל unable to load PKCS7 object - OrangeDog
האם זה לא בפורמט pkcs7, בעוד השאלה היא על x509 חבילות פורמט? - Yetanotherjosh
זה רק משתמש pkcs7 כמו ביניים. קלט הוא שרשר PEM. - Beni Cherniavsky-Paskin
אתה סופר! - Jingguo Yao


הבא שאלות נפוצות זה הוביל אותי זה סקריפט perl, אשר מאוד מאוד מציע לי את זה openssl אין תמיכה מקומית לטיפול nה אישור בחבילה, וכי במקום זאת עלינו להשתמש בכלי כלשהו כדי פרוסה- and- קוביות את הקלט לפני האכלה כל אישור כדי openssl. זה סקריפט perl, מותאם באופן חופשי מן התסריט של ניק Burch מקושר לעיל, נראה לעשות את העבודה:

#!/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





של ג 'אווה keytool עושה את הטריק:

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

ביאור: Windows Doubleclick אינו פועל. Windows קורא רק את האישור הראשון keystore באופן אוטומטי מרחיב את trustchain מ מובנית חנות האישור שלה.

תוצאות:

  1. הכל מעבר לתעודה הראשונה .crt הקובץ אינם מוצגים
  2. אתה יכול לקבל Trustchain שונים מוצגים מאשר יש לך .crt קובץ. זה עלול להוביל למסקנות שגויות.

17
2017-09-03 07:18



תודה על הבהרת דבר Windows. זה היה ממש מבלבל אותי לעזאזל - Nick.McDermaid


זה לא יכול להיות יפה, או אלגנטי, אבל זה היה מהיר ועבד בשבילי באמצעות בלוש על לינוקס, ו PEM פורמט בלוקים בקובץ צרור CA-cert.

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

אתה יכול לשים את זה כל שורה אחת, ולהתאים את האפשרויות openssl כדי שיתאימו. אני באמת רוצה היה פתרון אלגנטי יותר עבור זה, אבל במקרה זה אני חושב למצוא את הפתרון אלגנטי יותר היה לוקח יותר זמן מאשר לפרוץ את אחד אלגנטי.


3
2017-11-09 01:08





מאז אין פתרון מבוסס awk:

$ 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

הפקודה הראשונה לפצל צרור לתוך certs על ידי מחפש BEGIN, ו- END שורות. הפקודה השנייה לולאות דרך certs חילוץ ומראה אותם.


3
2018-04-19 06:55



התכונה ניתוב מחדש של הדפסה ב- awk זמינה ב- gawk ו- nawk, אך לא ב- awk בסיסי. וכך, זה יעבוד על לינוקס (gawk מקושר כמו awk), אבל אולי לא על OS X אשר יש בסיסי awk. - Raghu Dodda


אונלינר המציג סיכום של כל תעודה בתיק.

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

(קומנדו דומה הזכיר בתשובה אחרת, אבל זה נותן פלט קצר יותר, ללא אפשרות טקסט).

דוגמא:

$ 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



זה צריך הסברים טובים יותר - Sven♦


בבאש בדרך כלל נדרש רק שורה אחת (ארוכה) של קוד :-)

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





שינוי קטן להודעה של MadHatter כדי לאפשר לך להעתיק / להדביק ישר אל CLI. אני גם כללה את MD5 hash, וזה מועיל כאשר לוודא את certs הם נכונים. קו stdin חזר הוא חשיש md5 של cert (ים).

perl -e 'my $thisfile = "";
foreach (<>) {
   $thisfile .= $_;
   if($_ =~ /^\-+END(\s\w+)?\sCERTIFICATE\-+$/) {
      print "Found a complete certificate:\n";
      print `echo "$thisfile" | openssl x509 -noout -text`;
      print `echo "$thisfile" | openssl x509 -noout -modulus | openssl md5`;
      $thisfile = "";
   }
}' < my_id_cert_and_ca_bundle.crt

אם אתה רוצה לראות פלט קצר קצר תמציתית אתה משתמש בגירסה זו. מועיל אם אתה רק בודק כי יש לך כללה את cert, אבל לא ממש לבדוק את השימוש / וכו 'של cert (s).

perl -e 'my $thisfile = "";
foreach (<>) {
   $thisfile .= $_;
   if($_ =~ /^\-+END(\s\w+)?\sCERTIFICATE\-+$/) {
      print "Found a complete certificate:\n";
      print `echo "$thisfile" | openssl x509 -noout -serial -subject -dates -alias -issuer`;
      print `echo "$thisfile" | openssl x509 -noout -modulus | openssl md5` . "\n";
      $thisfile = "";
   }
}' < my_id_cert_and_ca_bundle.crt

רק במקרה גירסה openssl שלך אינו תומך בכל הדגלים כאן הוא egrep כמה אתה יכול להשתמש. אותו הדבר כמו הראשון אבל רק צינור egrep.

perl -e '.....
' < my_id_cert_and_ca_bundle.crt | egrep "Serial|Subject:|Not |Public-Key|^Cert|stdin|ssuer"

כדי לבדוק את hash MD5 של המפתח הפרטי אתה יכול לעשות את הפעולות הבאות.

לא נפתח - פותח md5

התייחסות: קונה SSL - תעודת התאמה


0
2018-02-08 09:18





הנה פתרון מבוסס awk שאינו מסתמך על קבצים ביניים.

cat bundle.crt | awk '{
  if ($0 == "-----BEGIN CERTIFICATE-----") cert=""
  else if ($0 == "-----END CERTIFICATE-----") print cert
  else cert=cert$0
}' | while read CERT; do
  echo "$CERT" | base64 -d | openssl x509 -inform DER -text -noout
done

זה עובד על ידי קריאת בלוקים PEM מ stdin ו שרשור כל בלוק לקו בודד base64 מקודדים. שורות לאחר מכן לקרוא, פענוח ועבר כדי openssl כמו DER מקודדים אישורים.


0
2018-04-23 19:00



רק בשביל הכיף: 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 }'. - Manav