美文网首页
生成新.keystore文件或者从pem和pk8转化的方法

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

作者: 青岛大桥_Android到后端 | 来源:发表于2018-05-24 09:21 被阅读297次

    这个办法用了好几年了,久经考验,发布了很多次key,用于android系统发布,以及APP应用发布。其实只是2个shell脚本,配合openssl使用。

    首先你最好有linux/unix系的环境,windows配cygwin应该也可以,没试过,不正宗啊。再一个,你要装openssl

    我使用的是ubuntu

    第1个脚本,生成新key的.
    使用方法例如: mkkey.sh your_project_name 例如 mkkey.sh platform 用来产生android发布的平台key 。或者 让你输入密码的时候,怕忘了就用android(80%的人后来会忘了自己用的什么密码)
    命令行使用过程如下:


    image.png

    会生成以下文件:
    1)platform.pk8和platform.x509.pem 一对。 请妥善保存在你的版本管理中。 可能会用于android系统开发
    2)platform.keystore,也请妥善保存在你的版本管理中,可用于android studio调试时,以及android app服务器编译发布时使用
    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. 根据已有的pem和pk8来生成keystore
      有时候android系统开发者会提供给我们 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, 经过我们的脚本之后,最后生成.keystore

    --------------华丽的分割线------------
    作者:青岛大桥。多年以来的IT狂热爱好者。在某尔做过家电硬件及技术管理,在某信做过智能系统软件和应用软件的开发及技术管理。也喜欢做物联网产品。期待交流和合作。

    相关文章

      网友评论

          本文标题:生成新.keystore文件或者从pem和pk8转化的方法

          本文链接:https://www.haomeiwen.com/subject/hsejjftx.html