本篇是本系列的最后一篇:
用途
PKCS #12证书用于存放个人证书/私钥,一般以.p12或pfx做后缀。
更多信息可查看 https://en.wikipedia.org/wiki/PKCS_12
The full PKCS #12 standard is very complex. But in practice it is normally used to store just one private key and its associated certificate chain.
生成PKCS#12证书
生成包含证书和私钥的PKCS#12证书
执行如下指令,将PEM格式的证书和私钥转pkcs12证书:
openssl pkcs12 -export -inkey server.key -in server.pem -out server.p12
根据提示设置密码
Enter Export Password:
Verifying - Enter Export Password:
不设置密码也可以生成,似乎提取时会遇到问题。
生成包含证书、私钥和CA证书的PKCS#12证书
执行如下指令,将PEM格式的证书、私钥和CA证书转pkcs12证书
openssl pkcs12 -export -inkey server.key -in server.pem -chain -CAfile ca.pem -out server.p12
【Note】 只支持PEM格式的证书打包到pkcs12证书中,如果时DER格式的证书,需要先转换格式
从PKCS#12证书中提取内容
提取私钥
执行如下指令,
openssl pkcs12 -in server.p12 -nocerts -out server-p12.key
根据提示输入证书提出密码,并设置私钥的加密密码
Enter Import Password:
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
可用如下指令,不设置私钥的密码
openssl pkcs12 -in server.p12 -nocerts -out server-p12.key -nodes
提取证书
执行如下指令从PKCS#12证书文件中提取X.509证书
openssl pkcs12 -in server.p12 -nokeys -clcerts -out server-p12.pem
提取CA证书
执行如下指令从PKCS#12证书文件中提取PEM格式的CA证书
openssl pkcs12 -in server.p12 -nokeys -cacerts -out ca-p12.pem
提取证书+CA证书
提取CA证书和业务证书
openssl pkcs12 -in server.p12 -nokeys -out p12.pem
提取所有内容
提取私钥、证书、CA证书,并写入到文件中
openssl pkcs12 -in server.p12 -nodes -out all-in-one-p12.pem