Max, miembro de este gran equipo de trabajo, nos ha hecho el favor de escribir este tutorial ya que conoce muy bien este tema.
Solución:
openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt
openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name android
keytool -importkeystore -destkeystore platform.jks -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass android -alias android
La respuesta de Fang es correcta, pero le faltaba una explicación. Tuve que descifrar un par de cosas para darle sentido, y aunque no estoy 100% seguro de todo lo que obtuve de mi experiencia, estoy bastante seguro de que podría ayudar a la gente, así que aquí va.
De antemano, asegúrese de tener Openssl y keytool instalados y agregados a su RUTA, de lo contrario, los comandos no funcionarán, por supuesto.
openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt
Esto generará un archivo, “platform.priv.pem” a partir de su archivo pk8.
openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name KEY_ALIAS
Esto generará el archivo “platform.pk12” utilizando tanto su archivo “platform.x509.pem” como el “platform.priv.pem” generado anteriormente. los key alias es un valor de cadena que proporciona, puede ser cualquier cosa que desee, pero deberá recordarlo.
Después de ingresar este comando, se le solicitará una contraseña (y una confirmación de contraseña). Usted mismo definirá esta contraseña. será tu “key contraseña” y, por supuesto, también deberá recordarla.
keytool -importkeystore -destkeystore STORE_FILE_NAME.jks -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass KEY_PASSWORD -alias KEY_ALIAS
El comando final en realidad hará una de dos cosas:
- si el archivo jks especificado ya existe, importará (o anulará si existe) el key con el alias dado
- si el archivo aún no existe, creará un nuevo archivo jks e importará su key con el alias dado
De todos modos, el comando toma en el definido anteriormente key contraseña y key alias.
Una vez que se ingresa el comando, se le solicitará la contraseña de la tienda. Si ya existe JKS
archivo, tendrá que proporcionar la contraseña de la tienda JKS ya existente.
Por lo demás, es nuevo. JKS
usted define una nueva contraseña. Recuerda el valor que le das.
Al final del día, ha definido 4 valores:
- key alias
- key clave
- almacenar contraseña
- almacenar el nombre del archivo
Y eso es exactamente lo que necesitará el archivo Gradle de su proyecto de Android para firmar su APK
Expediente : [Android Project Root]/app/build.graddle
[...]
android
[...]
signingConfigs
release
storeFile file("STORE_FILE_PATH*/STORE_FILE_NAME.jks")
storePassword "STORE_PASSWORD"
keyAlias "KEY_ALIAS"
keyPassword "KEY_PASSWORD"
[...]
[...]
* : la JKS
El archivo probablemente debería colocarse dentro de su proyecto, para el control de versiones, pero también por simplicidad. Proporcione la ruta relativa desde su ubicación de build.graddle.
¡Espero que esto ayude!
Dado que el keytool-importkeypair solo funciona con un almacén de claves ya existente puede usar esta otra versión del script, que funcionará creando e importando su .x509.pem y .pk8 en un nuevo almacén de claves.
Aquí el script platform_import_keystore