一般来说,主流的Web服务软件,通常都基于两种基础密码库:OpenSSL和Java。
Tomcat、Weblogic、JBoss等,使用Java提供的密码库。通过Java的Keytool工具,生成Java Keystore(JKS)格式的证书文件。
Apache、Nginx等,使用OpenSSL提供的密码库,生成PEM、KEY、CRT等格式的证书文件。
此外,IBM的产品,如Websphere、IBM Http Server(IHS)等,使用IBM产品自带的iKeyman工具,生成KDB格式的证书文件。微软Windows Server中的Internet Information Services(IIS),使用Windows自带的证书库生成PFX格式的证书文件。
如果您在工作中遇到带有后缀扩展名的证书文件,可以简单用如下方法区分:
*.DER *.CER : 这样的证书文件是二进制格式,只含有证书信息,不包含私钥。
*.CRT : 这样的文件可以是二进制格式,也可以是文本格式,一般均为文本格式,功能与*.DER/*.CER相同。
*.PEM : 一般是文本格式,可以放证书或私钥,或者两者都包含。 *.PEM如果只包含私钥,那一般用 *.KEY代替。
*.PFX *.P12 是二进制格式,同时含证书和私钥,一般有密码保护。
怎么判断是文本格式还是二进制?
用记事本打开,如果是规则的数字字母,如
—–BEGIN CERTIFICATE—– MIIE5zCCA8+gAwIBAgIQN+whYc2BgzAogau0dc3PtzANBgkqh...... —–END CERTIFICATE—–
就是文本的,上面的BEGIN CERTIFICATE,说明这是一个证书
如果是—–BEGIN RSA PRIVATE KEY—–,说明这是一个私钥
这些证书格式之间是可以互相转换的
以下提供了一些证书之间的转换方法:
1. 将JKS转换成PFX
可以使用Keytool工具,将JKS格式转换为PFX格式。
keytool -importkeystore -srckeystore D:\server.jks -destkeystore D:\server.pfx -srcstoretype JKS -deststoretype PKCS12
2. 将PFX转换为JKS
可以使用Keytool工具,将PFX格式转换为JKS格式。
keytool -importkeystore -srckeystore D:\server.pfx -destkeystore D:\server.jks -srcstoretype PKCS12 -deststoretype JKS
3. 将PEM/KEY/CRT转换为PFX
使用OpenSSL工具,可以将密钥文件KEY和公钥文件CRT转化为PFX文件。
将密钥文件KEY和公钥文件CRT放到OpenSSL目录下,打开OpenSSL执行以下命令:
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt
4. 将PFX转换为PEM/KEY/CRT
使用OpenSSL工具,可以将PFX文件转化为密钥文件KEY和公钥文件CRT。
将PFX文件放到OpenSSL目录下,打开OpenSSL执行以下命令:
openssl pkcs12 -in server.pfx -nodes -out server.pem openssl rsa -in server.pem -out server.key
** 请注意 ** 此步骤是专用于使用keytool生成私钥和CSR申请证书,并且获取到pem格式证书公钥的情况下做分离私钥使用的,所以在实际部署证书时请使用此步骤分离出来的私钥和申请下来的公钥证书做匹配使用。。