Jak wyświetlić listę certyfikatów przechowywanych w magazynie kluczy PKCS12 za pomocą narzędzia keytool?

88

Chciałem wyświetlić listę certyfikatów przechowywanych w magazynie kluczy PKCS12.

Magazyn kluczy ma rozszerzenie .pfx

David García González
źródło

Odpowiedzi:

146

Jeśli magazyn kluczy to PKCS12 type ( .pfx), musisz go określić za pomocą -storetype PKCS12(dodane znaki końca linii dla większej czytelności):

keytool -list -v -keystore <path to keystore.pfx> \
    -storepass <password> \
    -storetype PKCS12
David García González
źródło
6
Jeśli wolisz narzędzie z interfejsem graficznym, znalazłem Keystore Explorer, zamiennik GUI typu open source dla narzędzi wiersza poleceń Java, keytool, jarsigner i jadtool. keystore-explorer.sourceforge.net
David García González
Dzięki za wskazówkę @David. Miło widzieć, że projekt jest nadal aktywny, w przeciwieństwie do wielu innych tego typu projektów!
John Rix
doskonała wskazówka na temat tego darmowego narzędzia - generalnie wolę wiersze poleceń, ale jest to bardzo miłe
Rhubarb
1
Czy to powinno działać z ( .p12)? Dostajęjava.io.IOException: Invalid keystore format
IgniteCoders
To nie działa z magazynem certyfikatów P12 (marzec 2019, najnowsza wersja KeyTool)
Harald Coppoolse
29

Możesz również użyć, opensslaby osiągnąć to samo:

$ openssl pkcs12 -nokeys -info \
    -in </path/to/file.pfx> \
    -passin pass:<pfx's password>

MAC Iteration 2048
MAC verified OK
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
Bag Attributes
    localKeyID: XX XX XX XX XX XX XX XX XX XX XX XX XX 48 54 A0 47 88 1D 90
    friendlyName: jedis-server
subject=/C=US/ST=NC/L=Raleigh/O=XXX Security/OU=XXX/CN=something1
issuer=/C=US/ST=NC/L=Raleigh/O=XXX Security/OU=XXXX/CN=something1
-----BEGIN CERTIFICATE-----
...
...
...
-----END CERTIFICATE-----
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
slm
źródło
3
Powiem tylko, że działa również dla plików .p12. Bardzo pomocne, dzięki!
Rich Ross
@PhilipRego na pewno możesz, po prostu zawiń je w pojedyncze cudzysłowy.
slm
Chciałem zobaczyć alias, czyli przyjazną nazwę. Musiał użyć „openssl pkcs12 -nodes -in </path/to/file.pfx> -passin pass: <hasło pfx>”
Domo
3

Możesz wyświetlić listę wpisów (szczegóły certyfikatów) za pomocą narzędzia kluczy, a nawet nie musisz wspominać o typie sklepu.

keytool -list -v -keystore cert.p12 -storepass <password>

 Keystore type: PKCS12
 Keystore provider: SunJSSE

 Your keystore contains 1 entry
 Alias name: 1
 Creation date: Jul 11, 2020
 Entry type: PrivateKeyEntry
 Certificate chain length: 2
złupić
źródło
Pls rozważ wyjaśnienie swojego kodu i tego, w jaki sposób może to pomóc, aby inni mogli z tego skorzystać.
Amit Verma
Zaktualizowałem odpowiedź.
harry
2

W pytaniu i wszystkich odpowiedziach brakuje tego hasła, aby odczytać dane publiczne z magazynu kluczy PKCS # 12 (.pfx). To, czy potrzebujesz hasła, czy nie, zależy od tego, jak utworzono plik PKCS # 12. Możesz sprawdzić strukturę ASN1 pliku (uruchamiając go przez parser ASN1, openssl lub certutil też może to zrobić), czy dane PKCS # 7 (np. Prefiks OID 1.2.840.113549.1.7) są wymienione jako „zaszyfrowane” lub ze specyfikacją szyfrowania lub jeśli lokalizacja danych w drzewie asn1 znajduje się poniżej zaszyfrowanego węzła, nie będzie można ich odczytać bez znajomości hasła. Oznacza to, że polecenie „openssl pkcs12” zakończy się niepowodzeniem z błędami (wynik zależy od wersji). Dla tych, którzy zastanawiają się, dlaczego możesz być zainteresowany certyfikatem PKCS # 12 bez znajomości hasła. Wyobraź sobie, że masz wiele magazynów kluczy i wiele fraz fazowych i naprawdę źle radzisz sobie z ich uporządkowaniem i nie chcesz testować wszystkich kombinacji, certyfikat w pliku może pomóc ci dowiedzieć się, jakie to może być hasło. Lub tworzysz oprogramowanie do migracji / odnawiania magazynu kluczy i musisz z góry zdecydować, którą procedurę zainicjować na podstawie zawartego certyfikatu bez interakcji użytkownika. Zatem te ostatnie przykłady działają bez hasła w zależności od struktury PKCS # 12. Lub tworzysz oprogramowanie do migracji / odnawiania magazynu kluczy i musisz z góry zdecydować, którą procedurę zainicjować na podstawie zawartego certyfikatu bez interakcji użytkownika. Zatem te ostatnie przykłady działają bez hasła w zależności od struktury PKCS # 12. Lub tworzysz oprogramowanie do migracji / odnawiania magazynu kluczy i musisz z góry zdecydować, którą procedurę zainicjować na podstawie zawartego certyfikatu bez interakcji użytkownika. Zatem te ostatnie przykłady działają bez hasła w zależności od struktury PKCS # 12.

Chciałem to tylko dodać, ponieważ sam nie znalazłem odpowiedzi i spędziłem dużo czasu, aby to rozgryźć.

xordonkey
źródło
2
openssl pkcs12 -info -in keystore_file
Michał Rudnicki
źródło