pem和PKCS12格式的证书互相转换

把pem格式的证书转换为PKCS12格式

pem证书

一般是文本格式,可保存证书,可保存私钥, 以 -----BEGIN… 开头,以 -----END… 结尾,中间的内容是 BASE64 编码。有时也把pem 格式的私钥的后缀改为 .key 以区别证书与私钥。nginx之类的web服务器,需要这种格式的证书

jks证书

二进制格式,同时包含证书和私钥,一般有密码保护。是JAVA 的专属格式(Java Key Storage)

pkcs12证书

定义了包含私钥与公钥证书(public key certificate)的文件格式,行业标准,一般以:p12,pfx 结尾

转换 pem证书为 pkcs12证书

Java不支持直接使用pem类型的证书,必须先转换为 jks或者pkcs12(推荐)

安装openssl

略,太简单

转换命令

语法格式:openssl pkcs12 -export -in [公钥] -inkey [私钥] -out [pkcs12证书文件]

openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out springboot.p12

执行后会通过控制台交互,输入2次keystore的密码(第二次为确认密码无误)。执行完毕后,会在当前目录下生成指定的两个文件

从 pkcs12证书 中提取公钥和私钥文件

也就是吧 pkcs12 转换为 pem

提取证书文件

执行过程需要通过控制台输入keystore的密码

openssl pkcs12 -in springboot.p12 -out springboot.pem -nokeys -clcerts

提取私钥文件

openssl pkcs12 -in springboot.p12 -out springboot.key -nocerts -nodes

-in 参数指定pkcs12 证书文件
-out 参数指定输出的pem文件