生成新.keystore文件或者從pem和pk8轉化的方法

這個辦法用了好幾年了,久經(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%的人后來會忘了自己用的什么密碼)
命令行使用過程如下:


image.png

會生成以下文件:
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
  1. 根據(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)品。期待交流和合作。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容