Quería enumerar los certificados almacenados en un almacén de claves PKCS12.
El almacén de claves tiene la extensión .pfx
Quería enumerar los certificados almacenados en un almacén de claves PKCS12.
El almacén de claves tiene la extensión .pfx
Respuestas:
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
.p12
)? Recibojava.io.IOException: Invalid keystore format
También puede usar openssl
para 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
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
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.
openssl pkcs12 -info -in keystore_file