证书相关说明:SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12

参考大佬的帖子,原地址:

1. https://www.cnblogs.com/guogangj/p/4118605.html

2. https://blog.csdn.net/yetugeng/article/details/100629159

SSL

SSL - Secure Sockets Layer,现在应该叫"TLS",但由于习惯问题,我们还是叫"SSL"比较多.http协议默认情况下是不加密内容的,这样就很可能在内容传播的时候被别人监听到,对于安全性要求较高的场合,必须要加密,https就是带加密的http协议,而https的加密是基于SSL的,它执行的是一个比较下层的加密,也就是说,在加密前,你的服务器程序在干嘛,加密后也一样在干嘛,不用动,这个加密对用户和开发者来说都是透明的.More:[维基百科]

OpenSSL - 简单地说,OpenSSL是SSL的一个实现,SSL只是一种规范.理论上来说,SSL这种规范是安全的,目前的技术水平很难破解,但SSL的实现就可能有些漏洞,如著名的"心脏出血".OpenSSL还提供了一大堆强大的工具软件

证书标准

X.509 - 这是一种证书标准,主要定义了证书中应该包含哪些内容.其详情可以参考RFC5280,SSL使用的就是这种证书标准.

编码格式

名词解释

这里先介绍一下X.690,它是ITU-T标准,规定了几种ASN.1编码格式:

Basic Encoding Rules (BER)
Canonical Encoding Rules (CER)
Distinguished Encoding Rules (DER)

关于X.509证书,可能有不同的编码格式,目前有以下两种编码格式.

1. DER (Distinguished Encoding Rules

DER是BER的一个受限变体,用于为ASN.1中描述的数据结构生成明确的传输语法。与CER一样,DER编码也是有效的BER编码。DER除了删除了一个发送者选项外,其他的与BER完全相同。

DER是BER的子集,提供了一种准确编码ASN.1值的方法。DER适用于需要唯一编码情况,例如在加密中,确保需要进行数字签名的数据结构产生一个唯一的序列化表示。DER可以被认为是BER的规范形式。例如,在BER中,布尔值true可以编码为255个非零字节值中的任何一个,而在DER中,只有一种方法编码布尔值true。

DER被广泛的用户数字证书,例如X.509。

(1)打开看是二进制格式,不可读.

(2)查看DER格式证书的信息:openssl x509 -in certificate.der -inform der -text -noout
(3)Java和Windows服务器偏向于使用这种编码格式.

2. PEMPrivacy-Enhanced Mail

pem 是一种基于一组定义“隐私增强邮件”的1993 IETF标准的文件格式,用于存储和发送加密密钥,证书和其他数据。虽然原始标准从未被广泛采用,并已经被PGP和S / MIME取代,但它们定义的文本编码方式流行起来了。PEM格式最终由IETF在RFC 7468中正式确定。

许多加密标准使用ASN.1来定义它们的数据结构,使用区分编码规则(Distinguished Encoding Rules,DER)来序列化这些结构。由于DER 产生二进制输出,它在传输结果文件通过只支持ASCII的系统系统时,具有很大的挑战性,比如通过电子邮件系统时。PEM格式则使用Base64编码二进制数据的方式解决了这个问题

(1)打开看文本格式,以"-----BEGIN..."开头, "-----END..."结尾,内容是BASE64编码.

这个 label  决定了被编码消息的类型,通常这些类型有如下一些:

"CERTIFICATE", "CERTIFICATE REQUEST", "PRIVATE KEY" and "X509 CRL".

PEM 格式的数据通常存储在以 ".pem",".cer",".crt"(证书)或者".key"(公钥或私钥)为后缀的文件中。这个PEM文件中的lable字段比文件后缀名更加准确地代表了数据类型,因为许多不同类型的数据都可以保存在".pem"结尾的文件中。

(2)查看PEM格式证书的信息:openssl x509 -in certificate.pem -text -noout
(3)Apache和*NIX服务器偏向于使用这种编码格式.

相关的文件扩展名

虽然有X.509证书有PEM和DER这两种编码格式,但文件扩展名并不一定就叫"PEM"或者"DER",常见的扩展名除了PEM和DER还有以下这些,它们除了编码格式可能不同之外,内容也有差别,但大多数都能相互转换编码格式.

CRT - CRT应该是certificate的三个字母,其实还是证书的意思,常见于*NIX系统,有可能是PEM编码,也有可能是DER编码,大多数应该是PEM编码,相信你已经知道怎么辨别.

CER - 还是certificate,还是证书,常见于Windows系统,同样的,可能是PEM编码,也可能是DER编码,大多数应该是DER编码.

 

posted @ 2021-04-30 17:38  人生充满不确定性  阅读(439)  评论(0)    收藏  举报