小白想搞了https证书,结果发现服务商不同,下载到的文件也不同。于是就查了查证书相关信息。
一、证书常见格式
证书格式
从分类标准上分,SSL 证书格式主要有
1、公钥证书格式标准 X.509 中定义的 PEM 和 DER
2、公钥加密标准 PKCS 中定义的 PKCS#7 和 PKCS#12
3、Java 环境专用的 JKS
具体场景的说明:
1、.DER .CER,二进制格式存储,文本浏览器打开是一堆乱码,这个是只保存证书信息,不保存私钥。在windows系统的图标一般是这样的,跟个奖状一样:
需要注意的是:实际场景中,der后缀的,大概率是DER编码证书;cer后缀的,编码一般是der,也有可能是pem格式。
常见于:windows操作系统
2、.PEM,Privacy Enhanced Mail的缩写。数据存储是文本格式,以 -----BEGIN... 开头,以 -----END... 结尾。可保存证书,可保存私钥。
需要注意的是:privkey.pem(存储私钥的文件),有的服务场景会改名为.key结尾的文件。
证书常见于web服务器:nginx
3、.CRT,可以是二进制格式,可以是文本格式,与 .DER 格式相同,不保存私钥。
证书用于web服务器:apache,常见于linux操作系统环境
4、.PFX .P12,微软 IIS 的实现的证书格式,二进制格式,同时包含证书和私钥,一般有密码保护。
5、.JKS,java的keytool程序实现的证书格式,二进制格式,同时包含证书和私钥,一般有密码保护。常见于:安卓签名
6、.CSR,Certificate signing request,签名的基础信息,包含证书持有人的信息,如:国家,邮件,域名,公司等信息。就是证书登记的相关附加信息
二、查看证书
使用openssl程序解析查看
1、查看pem编码的证书,执行:
openssl x509 -in cert.pem -text -noout
如果执行错误,就是DER编码的
2、查看DER编码证书,添加inform参数,执行:
openssl x509 -in cert.der -inform der -text -noout
其他的相关查看:
# 查看证书序列号
openssl x509 -in ca.crt -noout -serial
# 打印证书名称以 RFC2253 规定的格式打印出证书的拥有者名字
openssl x509 -in ca.crt -noout -subject
# 打印出证书的 MD5 特征参数
openssl x509 -in ca.crt -noout -fingerprint
# 打印出证书的 SHA 特征参数
openssl x509 -sha1 -in ca.crt -noout -fingerprint
实际场景:
如果是windows环境,只需要把fullchain.pem等证书文件,修改扩展名为cer,系统会自动判定编码和解析,双击就可以查看了。
三、证书转换
使用场景中,有的时候需要转换格式,比如:从PEM转换到DER编码
PEM到DER
openssl x509 -in cert.pem -outform der-out cert.der
DER到PEM
openssl x509 -in cert.crt -inform der -outform pem -out cert.pem