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个工具请自行下载,安装后需要添加到系统环境变量中。
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年) 此处为天数
生成证书的效果:
证书转换:
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格式
输入证书密码,自己留存。
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
完整的过程:
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
暂无评论内容