這個辦法用了好幾年了,久經(jīng)考驗,發(fā)布了很多次key,用于android系統(tǒng)發(fā)布,以及APP應用發(fā)布。其實只是2個shell腳本,配合openssl使用。
首先你最好有l(wèi)inux/unix系的環(huán)境,windows配cygwin應該也可以,沒試過,不正宗啊。再一個,你要裝openssl
我使用的是ubuntu
第1個腳本,生成新key的.
使用方法例如: mkkey.sh your_project_name 例如 mkkey.sh platform 用來產(chǎn)生android發(fā)布的平臺key ?;蛘? 讓你輸入密碼的時候,怕忘了就用android(80%的人后來會忘了自己用的什么密碼)
命令行使用過程如下:

會生成以下文件:
1)platform.pk8和platform.x509.pem 一對。 請妥善保存在你的版本管理中。 可能會用于android系統(tǒng)開發(fā)
2)platform.keystore,也請妥善保存在你的版本管理中,可用于android studio調試時,以及android app服務器編譯發(fā)布時使用
3) 其它中間文件,不必理會
#!/bin/sh
AUTH='/C=CN/ST=Shandong/L=Qingdao/O=H/OU=project/CN=AndroidPos/emailAddress=javasdk@163.com'
if [ "$1" = "" ]; then
echo "Create a test certificate key."
echo "Usage: $0 NAME"
echo "Will generate NAME.pk8 and NAME.x509.pem"
echo "NAME can be platform, media, shared and releasekey"
#echo " $AUTH"
exit
fi
openssl genrsa -3 -out $1.pem 2048
openssl req -config /etc/ssl/openssl.cnf -new -x509 -key $1.pem -out $1.x509.pem -days 10000 -subj "$AUTH"
#echo "Please enter the password for this key:"
#openssl pkcs8 -in $1.pem -topk8 -outform DER -out $1.pk8 -passout stdin
openssl pkcs8 -in $1.pem -topk8 -outform DER -out $1.pk8 -nocrypt
#trans key to .keystore format
openssl pkcs8 -in $1.pk8 -inform DER -outform PEM -out $1.priv.pem -nocrypt
echo "now input password, we suggest you use the password: android"
openssl pkcs12 -export -in $1.x509.pem -inkey $1.priv.pem -out $1.pk12 -name androiddebugkey
keytool -importkeystore -deststorepass android -destkeypass android -destkeystore $1.keystore -srckeystore $1.pk12 -srcstoretype PKCS12 -srcstorepass android -alias androiddebugkey
-
根據(jù)已有的pem和pk8來生成keystore
有時候android系統(tǒng)開發(fā)者會提供給我們 x509.pem和pk8, 而不是keystore, 這時候需要我們轉化,腳本用以下:
image.png
if [ "$1" = "" ]; then
echo "help:"
echo "$0 [NAME]"
echo "Will generate NAME.keystore from NAME.pk8 and NAME.x509.pem"
echo "NAME can be platform, media, shared and releasekey, or your other custom things"
echo "will ask you to type in password twice, suggest you use android for default"
exit
fi
openssl pkcs8 -in $1.pk8 -inform DER -outform PEM -out $1.priv.pem -nocrypt
openssl pkcs12 -export -in $1.x509.pem -inkey $1.priv.pem -out $1.pk12 -name androiddebugkey
keytool -importkeystore -deststorepass android -destkeypass android -destkeystore $1.keystore -srckeystore $1.pk12 -srcstoretype PKCS12 -srcstorepass android -alias androiddebugkey
可見,原來只有.x509.pem和.pk8, 經(jīng)過我們的腳本之后,最后生成.keystore
--------------華麗的分割線------------
作者:青島大橋。多年以來的IT狂熱愛好者。在某爾做過家電硬件及技術管理,在某信做過智能系統(tǒng)軟件和應用軟件的開發(fā)及技術管理。也喜歡做物聯(lián)網(wǎng)產(chǎn)品。期待交流和合作。
