Mam plik .crt pakietu certyfikatów.
robi openssl x509 -in bundle.crt -text -noout
tylko pokazuje certyfikat główny.
jak mogę zobaczyć wszystkie inne certyfikaty?
http://comments.gmane.org/gmane.comp.encryption.openssl.user/43587 sugeruje ten jeden wiersz:
openssl crl2pkcs7 -nocrl -certfile CHAINED.pem | openssl pkcs7 -print_certs -text -noout
To rzeczywiście działało dla mnie, ale nie rozumiem szczegółów, więc nie mogę powiedzieć, czy są jakieś zastrzeżenia.
/etc/ssl/certs/ca-certificates.crt
i dostałemunable to load PKCS7 object
Java
keytool
robi lewę:Adnotacja: Podwójne kliknięcie w systemie Windows nie działa. Windows odczytuje tylko pierwszy certyfikat z magazynu kluczy i automatycznie rozszerza łańcuch zaufania z wbudowanego magazynu certyfikatów.
Wyniki:
.crt
pliku nie są wyświetlane.crt
pliku. Może to prowadzić do błędnych wniosków.źródło
W następstwie tego FAQ doprowadziły mnie do tego skryptu perla , która bardzo silnie sugeruje mi, że
openssl
nie ma natywne wsparcie dla obsługi n th certyfikatu w wiązce, a zamiast tego musimy użyć innego narzędzia do krojenia i-Dice wejście przed karmieniem każdy certyfikat dlaopenssl
. Wydaje się, że ten skrypt perla, swobodnie dostosowany do skryptu Nicka Burcha, do którego odsyłam powyżej:źródło
Oneliner, który wyświetla podsumowanie każdego certyfikatu w pliku.
(podobny komandos wspomniany w innej odpowiedzi, ale daje to krótszy wynik, bez opcji --text).
przykład:
źródło
To może nie być ładne ani eleganckie, ale było szybkie i działało dla mnie przy użyciu bash na Linuksie i bloków sformatowanych PEM w pliku pakietu ca-cert.
Możesz umieścić wszystko w jednym wierszu i dopasować opcje openssl do własnych potrzeb. Naprawdę chciałbym, aby istniało bardziej eleganckie rozwiązanie, ale w tym przypadku myślę, że znalezienie bardziej eleganckiego rozwiązania zajęłoby więcej czasu niż zhakowanie nieeleganckiego.
źródło
Ponieważ nie ma rozwiązania opartego na awk:
Pierwsze polecenie podzieliło pakiet na certyfikaty, szukając linii BEGIN i END. Drugie polecenie zapętla wyodrębnione certyfikaty i pokazuje je.
źródło
W bash zwykle potrzebny jest tylko jeden (długi) wiersz kodu :-)
źródło
Niewielka modyfikacja posta MadHatter, umożliwiająca kopiowanie / wklejanie bezpośrednio do interfejsu CLI. Dołączyłem również skrót MD5, który jest pomocny, gdy upewniam się, że certyfikaty są poprawne. Zwracana linia stdin jest skrótem md5 certyfikatów.
Jeśli chcesz zobaczyć krótkie, zwięzłe wyjście, skorzystaj z tej wersji. Pomocne, jeśli sprawdzasz tylko, czy podałeś wszystkie swoje certyfikaty, ale tak naprawdę nie sprawdzasz użycia / etc certyfikatów.
Na wypadek gdyby twoja wersja openssl nie obsługiwała wszystkich tych flag, możesz użyć egrep. To samo, co pierwsza, ale po prostu potok do egrep.
Aby sprawdzić skrót MD5 klucza prywatnego, możesz wykonać następujące czynności.
Odniesienie: SSL Shopper - Key Key Matcher
źródło
Oto rozwiązanie oparte na awk, które nie opiera się na plikach pośrednich.
Działa poprzez odczytywanie bloków PEM ze standardowego wejścia i łączenie każdego bloku do pojedynczej linii kodowanej base64. Linie są następnie odczytywane, dekodowane i przekazywane do openssl jako certyfikaty zakodowane w DER.
źródło
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 }'
.Chciałbym tu podać idiomatyczny wiersz perla:
Jeśli jest tekst, to nieco bardziej niezawodna poprawka:
Wystarczy zmienić wartość n, która powinna być w drugiej instrukcji, aby uzyskać n-ty certyfikat.
źródło
Metoda Windows
Jednym ze sposobów zobaczenia całego łańcucha jest (oczywiście w systemie Windows) dwukrotne kliknięcie crt, a następnie spojrzenie na kartę Ścieżka certyfikacji. Pokaże cały łańcuch, nawet jeśli jest tylko Pośredni lub Certyfikat główny. Zobacz zrzut ekranu poniżej, aby uzyskać szczegółowe informacje. Jeśli nie korzystasz z systemu Windows, przepraszam za brak wiedzy na temat wariantów Unix / Linux.
Uwaga: może to powodować fałszywe wyniki, jeśli certyfikat pośredni znajduje się w lokalnym magazynie kluczy. System Windows doda go automatycznie i nie pokaże tylko tego, co było w pakiecie.
Linux (metoda Ubuntu)
Przeoczyłem twoje początkowe polecenie i masz jedną rzecz nie na miejscu. Twoje polecenie powinno wyglądać następująco:
Źródło: http://manpages.ubuntu.com/manpages/hardy/man1/x509.1ssl.html
źródło
openssl
wywołanie spowodowało błąd składniowy, ale że wymieniono tylko pierwszy certyfikat w pakiecie. Po drugie, oba wywołania są funkcjonalnie identyczne. Po trzecie i chyba najważniejsze, twoje też nie działa, przynajmniej dla mnie; zawiera również tylko pierwszy certyfikat w pakiecie.