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?

¿Fue útil?

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).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top