openssl证书转换
PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。
常用的有:
PKCS
PKCS
PKCS
X.509是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。
PKCS
PKCS
X.509 DER 编码(ASCII)的后缀是: .DER .CER .CRT
X.509 PAM 编码(Base64)的后缀是: .PEM .CER .CRT
.cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。
.pem跟crt/cer的区别是它以Ascii来表示。
pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式
p10是证书请求
p7r是CA对证书请求的回复,只用于导入
p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。
5
PEM格式
PEM格式是证书颁发机构颁发证书的最常见格式.PEM证书通常具有扩展名,例如.pem,.crt,.cer和.key。它们是Base64编码的ASCII文件,包含“----- BEGIN CERTIFICATE -----”和“----- END CERTIFICATE -----”语句。服务器证书,中间证书和私钥都可以放入PEM格式。
Apache和其他类似服务器使用PEM格式证书。几个PEM证书,甚至私钥,可以包含在一个文件中,一个在另一个文件之下,但是大多数平台(例如Apache)希望证书和私钥位于单独的文件中。
DER格式
DER格式只是证书的二进制形式,而不是ASCII PEM格式。它有时会有.der的文件扩展名,但它的文件扩展名通常是.cer所以判断DER .cer文件和PEM .cer文件之间区别的唯一方法是在文本编辑器中打开它并查找BEGIN / END语句。所有类型的证书和私钥都可以用DER格式编码。DER通常与Java平台一起使用。SSL转换器只能将证书转换为DER格式。如果您需要将私钥转换为DER,请使用此页面上的OpenSSL命令。
PKCS#7 / P7B格式
PKCS#7或P7B格式通常以Base64 ASCII格式存储,文件扩展名为.p7b或.p7c。P7B证书包含“----- BEGIN PKCS7 -----”和“----- END PKCS7 -----”语句。P7B文件仅包含证书和链证书,而不包含私钥。多个平台支持P7B文件,包括Microsoft Windows和Java Tomcat。
PKCS#12 / PFX格式
PKCS#12或PFX格式是二进制格式,用于将服务器证书,任何中间证书和私钥存储在一个可加密文件中。PFX文件通常具有扩展名,例如.pfx和.p12。PFX文件通常在Windows计算机上用于导入和导出证书和私钥。
将PFX文件转换为PEM格式时,OpenSSL会将所有证书和私钥放入一个文件中。您需要在文本编辑器中打开该文件,并将每个证书和私钥(包括BEGIN / END语句)复制到其各自的文本文件中,并将它们分别保存为certificate.cer,CACert.cer和privateKey.key。
OpenSSL命令在您的计算机上转换SSL证书
强烈建议您使用OpenSSL在自己的计算机上转换为.pfx文件,以便在那里保留私钥。使用以下OpenSSL命令将SSL证书转换为您自己计算机上的不同格式:
crt to pem
openssl x509 -inform der -in certificate.crt -out certificate.pem
1
cer to pem
openssl x509 -inform der -in certificate.cer -out certificate.pem
1
pem to der
openssl x509 -outform der -in certificate.pem -out certificate.der
1
crt to p12
openssl pkcs12 -export -in client.crt -inkey client.key -out certificates.p12 -name "certificates"
1
p12 to pem
openssl pkcs12 -in elastic-certificates.p12 -out newfilecrt.pem -clcerts -nokeys
1
pem to spc
openssl crl2pkcs7 -nocrl -certfile venus.pem -outform DER -out venus.spc
1
pem to pkcs
openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem
1
p12 文件导出公钥私钥
生成key
openssl pkcs12 -in demo.p12 -nocerts -nodes -out demo.key
1
导出私钥
openssl rsa -in demo.key -out demo_pri.pem
1
导出公钥
openssl rsa -in demo.key -pubout -out demo_pub.pem
1
7.7.1. CA证书
用openssl创建CA证书的RSA密钥(PEM格式):
openssl genrsa -des3 -out ca.key 1024
7.7.2. 创建CA证书有效期为一年
用openssl创建CA证书(PEM格式,假如有效期为一年):
openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config openssl.cnf
openssl是可以生成DER格式的CA证书的,最好用IE将PEM格式的CA证书转换成DER格式的CA证书。
7.7.3. x509转换为pfx
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt
7.7.4. PEM格式的ca.key转换为Microsoft可以识别的pvk格式
pvk -in ca.key -out ca.pvk -nocrypt -topvk
7.7.5. PKCS
openssl pkcs12 -nocerts -nodes -in cert.p12 -out private.pem
验证
openssl pkcs12 -clcerts -nokeys -in cert.p12 -out cert.pem
7.7.6. 从 PFX 格式文件中提取私钥格式文件 (.key)
openssl pkcs12 -in mycert.pfx -nocerts -nodes -out mycert.key
7.7.7. 转换 pem 到到 spc
openssl crl2pkcs7 -nocrl -certfile venus.pem -outform DER -out venus.spc
用 -outform -inform 指定 DER 还是 PAM 格式。例如:
openssl x509 -in Cert.pem -inform PEM -out cert.der -outform DER
7.7.8. PEM 到 PKCS
openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem
IIS 证书
cd c:openssl
set OPENSSL_CONF=openssl.cnf
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt
server.key和server.crt文件是Apache的证书文件,生成的server.pfx用于导入IIS
7.7.9. How to Convert PFX Certificate to PEM Format for SOAP
$ openssl pkcs12 -in test.pfx -out client.pem
Enter Import Password:
MAC verified OK
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
7.7.10. DER文件(.crt .cer .der)转为PEM格式文件
转换DER文件(一般后缀名是.crt .cer .der的文件)到PEM文件
openssl x509 -inform der -in certificate.cer -out certificate.pem
转换PEM文件到DER文件
openssl x509 -outform der -in certificate.pem -out certificate.der
OpenSSL转换PEM
将PEM转换为DER
openssl x509 -outform der -in certificate.pem -out certificate.der
将PEM转换为P7B
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
将PEM转换为PFX
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
OpenSSL转换DER
将DER转换为PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
OpenSSL转换P7B
将P7B转换为PEM
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
将P7B转换为PFX
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
OpenSSL转换PFX
将PFX转换为PEM
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
将PFX文件转换为PEM格式时,OpenSSL会将所有证书和私钥放入一个文件中。您需要在文本编辑器中打开该文件,并将每个证书和私钥(包括BEGIN / END语句)复制到其各自的文本文件中,并将它们分别保存为certificate.cer,CACert.cer和privateKey.key。
如果需要将Java Keystore文件转换为其他格式,通常可以更轻松地创建新的私钥和证书,但可以将Java Keystore转换为PEM格式。
Keytool转换PFX
将PFX转换为JKS
keytool -importkeystore -srckeystore craftificate.pfx -srcstoretype pkcs12 -destkeystore craftificate.jks -deststoretype JKS