首先说下遇到的问题:
1.keytool 错误: java.io.IOException: keystore password was incorrect
原因:用的keytool有问题,我是用studio自带的jdk环境里面的keytool,路径在“…/android-studio\jre\bin”。后重新安装jdk1.8,配置好环境变量,使用jdk1.8里面的keytool就正常了。
2.keytool 错误: java.io.IOException: Keystore was tampered with, or password was incorrect
原因:该.jks签名已存在,且密码和输入的密码不一致;
再说下合成的方法:
1.下载安装openssl,并配置好环境变量,有jdk环境变量的可以直接使用keytool;
2.管理员权限打开cmd命令行,切换到platform.pk8和platform.x509.pem所在的目录,输入下面命令:
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 {alias}
此处后会提醒输入密码,假设为:123456
keytool -importkeystore -destkeystore platform.jks -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass {上面输入的123456密码} -alias {alias}
最后会再输入密码确认
完整记录如下:
C:\Users\Desktop>openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt
C:\Users\Desktop>openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name android
Enter Export Password:
Verifying - Enter Export Password:
C:\Users\Desktop>keytool -importkeystore -destkeystore platform.jks -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass 123456 -alias android
正在将密钥库 platform.pk12 导入到 platform.jks...
输入目标密钥库口令:
再次输入新口令:
Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore platform.jks -destkeystore platform.jks -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。