Cómo convertir el archivo .pfx en almacén de claves con la clave privada?
-
26-09-2019 - |
Pregunta
Tengo que firmar la aplicación Android (.apk
).
Tengo archivo .pfx
. Me convertí a .cer
archivo a través de Internet Explorer y .cer
convierte entonces en .keystore
utilizando herramienta de claves. Luego he tratado de firmar .apk
con jarsigner pero dice que no .keystore contenido de una clave privada.
Lo que estoy haciendo mal?
Solución
Uso de JDK 1.6 o posterior
Se ha señalado por Justin en los comentarios que herramienta de claves por sí sola es capaz de hacer esto con el siguiente comando (aunque sólo en el JDK 1.6 y posteriores):
keytool -importkeystore -srckeystore mypfxfile.pfx -srcstoretype pkcs12
-destkeystore clientcert.jks -deststoretype JKS
Uso de JDK 1.5 o por debajo de
OpenSSL puede hacerlo todo. Esta respuesta en JGuru es el mejor método que he encontrado hasta el momento .
En primer lugar, asegúrese de que usted tiene OpenSSL instalado. Muchos sistemas operativos ya lo tienen instalado como me encontré con Mac OS X.
Los siguientes dos comandos convertir el archivo PFX a un formato que se puede abrir como un almacén de claves de Java PKCS12:
openssl pkcs12 -in mypfxfile.pfx -out mypemfile.pem
openssl pkcs12 -export -in mypemfile.pem -out mykeystore.p12 -name "MyCert"
Nota que el nombre proporcionado en el segundo comando es el alias de su clave en el nuevo almacén de claves.
Se puede verificar el contenido del almacén de claves con la utilidad de la herramienta de claves Java con el siguiente comando:
keytool -v -list -keystore mykeystore.p12 -storetype pkcs12
Por último si es necesario se puede convertir esto en un almacén de claves JKS importando el almacén de claves creado anteriormente en un nuevo almacén de claves:
keytool -importkeystore -srckeystore mykeystore.p12 -destkeystore clientcert.jks -srcstoretype pkcs12 -deststoretype JKS
Otros consejos
jarsigner puede utilizar el archivo PFX como el almacén de claves para firmar su frasco. Asegúrese de que su archivo PFX tiene la clave privada y el certificado de la cadena cuando se exporta. No hay necesidad de convertir a otros formatos. El truco consiste en obtener el Alias ?? de su archivo PFX:
keytool -list -storetype pkcs12 -keystore your_pfx_file -v | grep Alias
Una vez que tenga sus alias, la firma es fácil
jarsigner.exe -storetype pkcs12 -keystore pfx_file jar_file "your alias"
Los anteriores dos comandos le pedirá la contraseña que especificó en la exportación pfj. Si usted quiere tener su contraseña pasar el rato en el uso de texto claro en la -storepass interruptor antes de la -keystore del interruptor
Una vez firmado, admirar su trabajo:
jarsigner.exe -verify -verbose -certs yourjarfile
esta página que le dice cómo importar un PFX a JKS (Java del almacén de claves):
keytool -importkeystore -srckeystore PFX_P12_FILE_NAME -srcstoretype pkcs12 -srcstorepass PFX_P12_FILE -srcalias SOURCE_ALIAS -destkeystore KEYSTORE_FILE -deststoretype jks -deststorepass PASSWORD -destalias ALIAS_NAME
Su archivo PFX debe contener la clave privada dentro de ella. Exportar la clave privada y el certificado directamente desde el archivo PFX (por ejemplo, utilizando OpenSSL) e importarlos en el almacén de claves de Java.
Editar
Para más información:
- Descargar OpenSSL para Windows aquí .
- Exportar clave privada:
openssl pkcs12 -in filename.pfx -nocerts -out key.pem
- certificado de exportación:
openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem
- clave privada y el certificado de importación en el almacén de claves de Java utilizando
keytool
.
Justin (arriba) es exacta. Sin embargo, tenga en cuenta que dependiendo de quién te toque el certificado (CA intermedia, CA raíz involucrados o no) o se exporta, a veces podían faltar la cadena de cómo se crea la pfj / certificado. Después de la importación, deberá tener un certificado de tipo PrivateKeyEntry, pero con una cadena de longitud de 1.
Para solucionar este problema, hay varias opciones. La opción más fácil en mi mente es importar y exportar el archivo PFX en IE (elegir la opción de incluir todos los certificados de la cadena). El proceso de importación y exportación de certificados en IE debe ser muy fácil y bien documentado en otros lugares.
Una vez exportado, importar el almacén de claves como Justin señaló anteriormente. Ahora, usted tendría un almacén de claves con certificado de tipo PrivateKeyEntry y con una longitud de cadena de certificados de más de 1.
Algunos clientes del servicio Web basado en .Net de error out (no puede establecer una relación de confianza), si no se hace lo anterior.
Si trabajar con JDK 1.5 o por debajo de la utilidad keytool no tendrá la opción de -importkeystore
(ver JDK 1.5 herramienta de claves documentación ) y la solución por MikeD sólo estarán disponibles mediante la transferencia de la .pfx
en una máquina con una nueva JDK (1.6 o superior).
Otra opción en el JDK 1.5 o por debajo (si tiene Oracle WebLogic producto), es seguir las instrucciones de este documento de Oracle: Uso de PFX y PEM de certificados con Keystores .
En él se describe la conversión en formato .pem
, cómo extraer información de los certificados de esta forma de texto, y la importación en formato .jks
con la utilidad java utils.ImportPrivateKey
(esto es una utilidad incluida con el producto WebLogic).