Android证书生成key.pk8和pem证书

1.生成证书需要用到的工具

生成高版本证书v1,v2,v3:Win64OpenSSL_Light-3_1_4.msi

下载地址:https://slproweb.com/download/Win64OpenSSL_Light-3_1_4.exe

生成低版本证书v1:Win64OpenSSL_Light-1_1_1w

下载地址:https://slproweb.com/download/Win64OpenSSL_Light-1_1_1w.exe

2.安装java,推荐使用jdk-8-windows版本

以上2个工具请自行下载,安装后需要添加到系统环境变量中。

Android证书生成key.pk8和pem证书-LaokNAS网络技术

Android证书生成key.pk8和pem证书-LaokNAS网络技术

3.OpenSSL生成证书

首先我们新建一个文件夹,用来存放我们的证书(新建OpenSSL证书文件夹)

生成自签名证书(使用已有的私钥创建自签名根证书(x509证书包含公钥、身份信息、签名信息))

生成root.key

PS D:\OpenSSL证书> openssl genrsa -out root.key 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
...................................................+++++
.......................................................+++++
e is 65537 (0x010001)

openssl req -new -x509 -days 36500 -key root.key -out root.crt -subj "/C=CN/ST=Liaoning/L=Shenyang/O=laoknas/OU=laoknas/CN=laok" 

-subj拥有者信息,CN:姓名;OU:组织单位名称;O:组织名称;L:省/市/自治区名称;C:国家/地区代码

days 36500(100年) 此处为天数

生成证书的效果:

Android证书生成key.pk8和pem证书-LaokNAS网络技术

证书转换:

openssl x509 -in root.crt -out root.pem // crt转pem格式
openssl x509 -in root.crt -out root.cer -outform der // crt转cer格式
openssl pkcs12 -export -in root.crt -inkey root.key -out root.p12 -name root // crt转p12格式

Android证书生成key.pk8和pem证书-LaokNAS网络技术

输入证书密码,自己留存。

Android证书生成key.pk8和pem证书-LaokNAS网络技术

p12证书中提取信息:

openssl pkcs12 -in keystore.p12 -password pass:123456 -passout pass:123456 -nocerts -out private.pem // 提取私钥(加密私钥文件)
openssl pkcs12 -in keystore.p12 -password pass:123456 -nodes -nocerts -out private.pem // 提取私钥(不加密私钥文件)
openssl pkcs12 -in keystore.p12 -password pass:123456 -nokeys -out out/all_cert.pem // 提取所有证书
openssl pkcs12 -in keystore.p12 -password pass:123456 -nokeys -cacerts -out out/cacert.pem // 仅输出CA证书
openssl pkcs12 -in keystore.p12 -password pass:123456 -nokeys -clcerts -out out/cert.pem // 仅输出客户端证书

PS D:\OpenSSL证书> openssl pkcs12 -in root.p12 -nodes -out tmp.rsa.pem
Enter Import Password:

生成tmp.rsa.pem文件,使用记事本打开。

在文件中找到以下内容区域复制

—–BEGIN CERTIFICATE—–

—–END CERTIFICATE—–
复制“BEGIN CERTIFICATE”  “END CERTIFICATE” 到(新建个文件)保存 cert.x509.pem,注意utf-8编码

 在文件中找到以下内容区域复制:
—–BEGIN PRIVATE KEY—–

—–END PRIVATE KEY—–
复制 “BEGIN RSA PRIVATE KEY”   “END RSA PRIVATE KEY” 到(同上) private.rsa.pem,注意utf-8编码

4.生成pk8格式的私钥

openssl pkcs8 -topk8 -outform DER -in     private.rsa.pem -inform PEM -out private.pk8 -nocrypt

Android证书生成key.pk8和pem证书-LaokNAS网络技术

完整的过程:

PS D:\OpenSSL证书> openssl genrsa -out root.key 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
……………………………………………+++++
……………………………………………….+++++
e is 65537 (0x010001)
PS D:\OpenSSL证书> openssl req -new -x509 -days 36500 -key root.key -out root.crt -subj "/C=CN/ST=Liaoning/L=Shenyang/O=laoknas/OU=laoknas/CN=laok"
PS D:\OpenSSL证书> openssl x509 -in root.crt -out root.pem
PS D:\OpenSSL证书> openssl x509 -in root.crt -out root.cer -outform der
PS D:\OpenSSL证书> openssl pkcs12 -export -in root.crt -inkey root.key -out root.p12 -name root
Enter Export Password:
Verifying - Enter Export Password:
PS D:\OpenSSL证书> openssl pkcs12 -in root.p12 -nodes -out tmp.rsa.pem
Enter Import Password:
PS D:\OpenSSL证书> openssl pkcs8 -topk8 -outform DER -in private.rsa.pem -inform PEM -out private.pk8 -nocrypt
PS D:\OpenSSL证书>

.pk8、.x509.pem转化为.keystore签名

利用Android系统签名 platform.pk8 和 platform.x509.pem 生成Apk签名文件xxx.keystore

keytool-importkeypair 下载路径如下:
https://github.com/getfatday/keytool-importkeypair

命令行生成keystore

./keytool-importkeypair -k test1.keystore -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias test2

// -k 表示要生成的 keystore 文件的名字,这里为 test1.keystore

// -p 表示要生成的 keystore 的密码,这里为 123456

// -pk8 表示要导入的 platform.pk8 文件

// -cert 表示要导入的platform.x509.pem

// -alias 表示给生成的 keystore 取一个别名,这是命名为 test2

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情

    暂无评论内容