Bagaimana cara mencantumkan sertifikat yang disimpan di keystore PKCS12 dengan keytool?

Jawaban:

146

Jika keystore adalah tipe PKCS12 ( .pfx) Anda harus menentukannya dengan -storetype PKCS12(jeda baris ditambahkan agar terbaca):

keytool -list -v -keystore <path to keystore.pfx> \
    -storepass <password> \
    -storetype PKCS12
David García González
sumber
7
Jika Anda lebih suka utilitas antarmuka grafis, saya menemukan Keystore Explorer, pengganti GUI open source untuk utilitas baris perintah Java keytool, jarsigner dan jadtool. keystore-explorer.sourceforge.net
David García González
Terima kasih atas tipnya @David. Senang melihat proyek ini masih aktif juga, tidak seperti banyak proyek lainnya!
John Rix
tip luar biasa tentang alat freeware itu - Saya biasanya lebih suka baris perintah tetapi ini sangat bagus
Rhubarb
1
Haruskah ini bekerja dengan ( .p12)? Saya mendapatkanjava.io.IOException: Invalid keystore format
IgniteCoders
Ini tidak berfungsi dengan penyimpanan sertifikat P12 (Maret 2019, versi KeyTool terbaru)
Harald Coppoolse
29

Anda juga dapat menggunakan openssluntuk mencapai hal yang sama:

$ 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
sumber
3
Hanya untuk mengatakan itu berfungsi untuk file .p12 juga. Sangat membantu, terima kasih!
Rich Ross
@PhilipRego yakin Anda bisa, cukup bungkus dalam tanda kutip tunggal.
slm
Saya ingin melihat alias alias nama ramah. Harus menggunakan "openssl pkcs12 -nodes -in </path/to/file.pfx> -passin pass: <pfx's password>"
Domo
6

Anda dapat membuat daftar entri (detail sertifikat) dengan keytool dan bahkan Anda tidak perlu menyebutkan jenis penyimpanannya.

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
harry
sumber
Mohon pertimbangkan untuk menjelaskan kode Anda dan bagaimana itu akan membantu, sehingga orang lain dapat memperoleh manfaat dari ini.
Amit Verma
Memperbarui jawabannya.
harry
3
openssl pkcs12 -info -in keystore_file
MIchal Rudnicki
sumber
2

Apa yang hilang dalam pertanyaan dan semua jawabannya adalah Anda mungkin memerlukan frasa sandi untuk membaca data publik dari keystore PKCS # 12 (.pfx). Jika Anda memerlukan frasa sandi atau tidak tergantung pada bagaimana file PKCS # 12 dibuat. Anda dapat memeriksa struktur ASN1 file (dengan menjalankannya melalui parser ASN1, openssl atau certutil juga dapat melakukan ini), jika data PKCS # 7 (misalnya, awalan OID 1.2.840.113549.1.7) terdaftar sebagai 'terenkripsi' atau dengan cipher-spec atau jika lokasi data di pohon asn1 berada di bawah node yang dienkripsi, Anda tidak akan dapat membacanya tanpa mengetahui frasa sandinya. Ini berarti perintah 'openssl pkcs12' Anda akan gagal dengan kesalahan (keluaran tergantung pada versinya). Bagi mereka yang bertanya-tanya mengapa Anda mungkin tertarik dengan sertifikat PKCS # 12 tanpa mengetahui frasa sandinya. Bayangkan Anda memiliki banyak keystore dan banyak frasa dan Anda benar-benar buruk dalam menjaganya agar tetap teratur dan Anda tidak ingin menguji semua kombinasi, sertifikat di dalam file dapat membantu Anda mengetahui kata sandinya. Atau Anda mengembangkan perangkat lunak untuk memigrasi / memperbarui keystore dan Anda perlu memutuskan terlebih dahulu prosedur mana yang akan dimulai berdasarkan sertifikat yang ada tanpa interaksi pengguna. Jadi contoh terakhir bekerja tanpa frasa sandi tergantung pada struktur PKCS # 12. Atau Anda mengembangkan perangkat lunak untuk memigrasi / memperbarui keystore dan Anda perlu memutuskan terlebih dahulu prosedur mana yang akan dimulai berdasarkan sertifikat yang ada tanpa interaksi pengguna. Jadi contoh terakhir bekerja tanpa frasa sandi tergantung pada struktur PKCS # 12. Atau Anda mengembangkan perangkat lunak untuk memigrasi / memperbarui keystore dan Anda perlu memutuskan terlebih dahulu prosedur mana yang akan dimulai berdasarkan sertifikat yang ada tanpa interaksi pengguna. Jadi contoh terakhir bekerja tanpa frasa sandi tergantung pada struktur PKCS # 12.

Hanya ingin menambahkan itu, karena saya sendiri tidak menemukan jawaban dan menghabiskan banyak waktu untuk mencari tahu.

xordonkey
sumber