¿Cómo enumerar los certificados almacenados en un almacén de claves PKCS12 con keytool?


Respuestas:


146

Si el almacén de claves es del tipo PKCS12 ( .pfx), debe especificarlo con -storetype PKCS12(se agregaron saltos de línea para facilitar la lectura):

keytool -list -v -keystore <path to keystore.pfx> \
    -storepass <password> \
    -storetype PKCS12

6
Si prefiere una utilidad de interfaz gráfica, encontré Keystore Explorer, un reemplazo de GUI de código abierto para las utilidades de línea de comandos de Java keytool, jarsigner y jadtool. keystore-explorer.sourceforge.net
David García González

Gracias por el consejo @David. Es bueno ver que el proyecto también sigue activo, ¡a diferencia de muchos otros proyectos similares!
John Rix

excelente consejo sobre esa herramienta gratuita - generalmente prefiero las líneas de comando, pero esto es muy bueno
Rhubarb

1
¿Debería funcionar esto con ( .p12)? Recibojava.io.IOException: Invalid keystore format
IgniteCoders

Esto no funciona con una tienda de certificados P12 (marzo de 2019, versión más reciente de KeyTool)
Harald Coppoolse

29

También puede usar opensslpara lograr lo mismo:

$ 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

3
Solo para decir que también funciona para archivos .p12. ¡Muy útil, gracias!
Rich Ross

@PhilipRego seguro que puede, simplemente envuélvalos entre comillas simples.
slm

Quería ver el alias conocido como friendlyname. Tuve que usar "openssl pkcs12 -nodes -in </path/to/file.pfx> -passin pass: <pfx's password>"
Domo

3

Puede enumerar las entradas (detalles de los certificados) con la herramienta de claves e incluso no necesita mencionar el tipo de tienda.

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

Por favor, considere explicar su código y cómo ayudaría, para que otros puedan beneficiarse de esto.
Amit Verma

Actualización de la respuesta.
Harry

2

Lo que falta en la pregunta y en todas las respuestas es que es posible que necesite la frase de contraseña para leer datos públicos del almacén de claves PKCS # 12 (.pfx). Si necesita una frase de contraseña o no, depende de cómo se creó el archivo PKCS # 12. Puede verificar la estructura ASN1 del archivo (ejecutándolo a través de un analizador ASN1, openssl o certutil también pueden hacer esto), si los datos PKCS # 7 (por ejemplo, el prefijo OID 1.2.840.113549.1.7) están listados como 'encriptados' o con una especificación de cifrado o si la ubicación de los datos en el árbol asn1 está debajo de un nodo cifrado, no podrá leerlo sin el conocimiento de la frase de contraseña. Significa que su comando 'openssl pkcs12' fallará con errores (la salida depende de la versión). Para aquellos que se preguntan por qué podría estar interesado en el certificado de un PKCS # 12 sin conocimiento de la frase de contraseña. Imagine que tiene muchos almacenes de claves y muchas frases de fase y es muy malo para mantenerlos organizados y no quiere probar todas las combinaciones, el certificado dentro del archivo podría ayudarlo a averiguar qué contraseña podría ser. O está desarrollando software para migrar / renovar un almacén de claves y debe decidir de antemano qué procedimiento iniciar en función del certificado contenido sin la interacción del usuario. Por lo tanto, los últimos ejemplos funcionan sin contraseña según la estructura de PKCS # 12. O está desarrollando software para migrar / renovar un almacén de claves y debe decidir de antemano qué procedimiento iniciar en función del certificado contenido sin la interacción del usuario. Por lo tanto, los últimos ejemplos funcionan sin contraseña según la estructura de PKCS # 12. O está desarrollando software para migrar / renovar un almacén de claves y debe decidir de antemano qué procedimiento iniciar en función del certificado contenido sin la interacción del usuario. Por lo tanto, los últimos ejemplos funcionan sin contraseña según la estructura de PKCS # 12.

Solo quería agregar eso, porque yo mismo no encontré una respuesta y pasé mucho tiempo para resolverlo.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.