PEM格式的证书文件(*.pem)由Base64编码的二进制内容和开头行(-----BEGIN CERTIFICATE-----)、结束行(-----END CERTIFICATE-----)组成,支持使用EditPlus等文本编辑器打开。本文介绍了将不同格式的HTTPS证书转换为PEM格式的方法。
以下表格介绍了文件的常见格式,您可以参考以下表格区分带有后缀扩展名的证书文件。
| 文件后缀 | 文件类型 | 说明 |
|---|---|---|
| .DER或.CER | 二进制格式 | 只含有证书信息,不包含私钥。 |
| *.CRT | 二进制格式或 | |
| 文本格式 | 只含有证书信息,不包含私钥。 | |
| *.PEM | 文本格式 | 一般存放证书或私钥,或同时包含证书和私钥。.PEM文件如果只包含私钥,一般用.KEY文件代替。 |
| .PFX或.P12 | 二进制格式 | 同时包含证书和私钥,且一般有密码保护。 |
| *.JKS | 二进制格式 | 同时包含证书和私钥,一般有密码保护。 |
说明 证书格式之间是可以互相转化的。具体操作,请参见如何转换证书格式?。
您可以使用记事本直接打开证书文件。如果显示的是规则的数字字母(如下所示内容),那么该证书文件是文本格式。
—–BEGIN CERTIFICATE—–
MIIE5zCCA8+gAwIBAgIQN+whYc2BgzAogau0dc3PtzANBgkqh......
—–END CERTIFICATE—–
常见的Web服务软件,通常都基于OpenSSL和Java两种基础密码库。
对于CER或CRT格式的证书,您可通过直接修改证书文件扩展名的方式,将其转换成PEM格式。例如,将server.crt证书文件重命名为server.pem即可。
openssl x509 -in cert2.cer -out cert2.pem -outform PEM
DER格式证书一般出现在Java平台中,您可使用OpenSSL工具将其转化为PEM格式。通过执行以下两条OpenSSL命令,DER格式证书转换为PEM格式。
使用KeyTools工具:
命令行: keytool -import -file riemann_certificate.pem -keystore truststore.jks

openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -name "server"

P12转换为JKS
keytool -importkeystore -srckeystore server.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore server.jks
JKS转换为P12
keytool -importkeystore -srckeystore server.jks -srcstoretype JKS -deststoretype PKCS12 -destkeystore server.p12
这里可能是上面方法的整合,但为了方便以后开发,还是整合好堆积起来比较美。
JSK转换为PEM需要先,JKS–>P12–>PEM
//jks--->p12[需要注意这里必须add -alias keyOwnerAlias 否则会报错]
keytool -importkeystore -srckeystore sert.jks -destkeystore sert.p12 -srcstoretype jks -deststoretype pkcs12 -alias keyOwnerAlias
//p12--->pem
openssl pkcs12 -in sert.p12 -out sert.pem
//PEM--->PFX
openssl pkcs12 -export -out test.pfx -inkey test.key -in test.pem
//PFX--->JKS
keytool -importkeystore -srckeystore test.pfx -destkeystore test.jks -srcstoretype PKCS12 -deststoretype JKS
keytool -export -alias server -keystore server.p12 -storetype PKCS12 -storepass huawei -rfc -file huawei.cer
# 导出CER
keytool -import -v -file server.cer -keystore client.jks
# 导出PEM
openssl pkcs12 -in server.p12 -out server.pem -nokeys
keytool -list -keystore client.jks
keystore 是 Eclipse 生成的签名文件;
JKS 是 Android studio 生成的签名文件;
二者功能没啥大区别,可以转换;
JKS—–>KEYSTORE
//JKS--->P12
keytool -importkeystore -srckeystore D:\test.keystore -srcstoretype JKS -deststoretype PKCS12 -destkeystore test1.p12
//P12---->KEYSTORE
keytool -v -importkeystore -srckeystore D:\test.p12 -srcstoretype PKCS12 -destkeystore D:\test.keystore -deststoretype JKS
KEYSTORE——>JKS
//keystore--->crt
keytool -export -alias test -file D:\test.crt -keystore D:\test.keystore
//CRT-->CER
openssl x509 -inform pem -in test.crt -outform der -out test.cer
//CER--->JKS
keytool -import -v -alias test -file test.cer -keystore test.jks -storepass 123456 -noprompt
更多内容关注微信公众号 ”前后端技术精选“,或者语雀,里面有更多知识:https://www.yuque.com/riverzmm/uu60c9?# 《安全》> 更多内容关注微信公众号 ”前后端技术精选“,或者语雀,里面有更多知识:https://www.yuque.com/riverzmm/uu60c9?# 《安全》> 更多内容关注微信公众号 ”前后端技术精选“,或者语雀,里面有更多知识:https://www.yuque.com/riverzmm/uu60c9?# 《安全》> 更多内容关注微信公众号 ”前后端技术精选“,或者语雀,里面有更多知识:https://www.yuque.com/riverzmm/uu60c9?# 《安全》> 更多内容关注微信公众号 ”前后端技术精选“,或者语雀,里面有更多知识:https://www.yuque.com/riverzmm/uu60c9?# 《安全》> 更多内容关注微信公众号 ”前后端技术精选“,或者语雀,里面有更多知识:https://www.yuque.com/riverzmm/uu60c9?# 《安全》