HTTPS证书相关概念

X.509

密码学里公钥证书的格式标准。SSL/TLS中的证书格式即采用X.509。
是ITU-T标准化部门基于他们之前的ASN.1定义的一套证书标准。事实上的X.509指的是RFC5280里面定义的X.509 v3,包括对IETF的PKIX证书和证书吊销列表,通常也称为公钥基础设施。

编码格式

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

  • PEM (Privacy Enhanced Mail)
    • 打开看是文本格式,以"-----BEGIN..."开头, "-----END..."结尾,内容是BASE64编码.
    • 查看PEM格式证书的信息:openssl x509 -in certificate.pem -text -noout
    • Apache和*NIX服务器偏向于使用这种编码格式.
  • DER (Distinguished Encoding Rules)
    • 打开看是二进制格式。
    • 查看DER格式证书的信息:openssl x509 -in certificate.der -inform der -text -noout
    • Java和Windows服务器偏向于使用这种编码格式.

相关的文件扩展名

已经有PEM和DER两种编码格式,但是文件扩展名不一定叫做“PEM”和“DER”。还有的具有这个扩展名的文件可能并不是证书,比如说可能只是保存了私钥。

  • CRT
    • 应该是certificate的三个字母,还是证书的意思。常见于类UNIX系统,可能是PEM编码,也可能是DER编码。大多数是PEM编码
  • CER
    • 还是certificate。常见于Windows系统,可能是PEM编码,也可能是DER编码。大多数是DER编码
  • KEY
    • 通常用来存放公钥或者私钥,并非X.509证书。编码可能是PEM也可能是DER
    • 查看KEY的办法:openssl rsa -in -text -noout
    • 如果是DER格式的话,同理应该这样了:openssl rsa -in -text -noout -inform der
  • CSR (Certificate Signing Request)
    • 即证书签名请求,这个并不是证书,而是向权威证书颁发机构获得签名证书的申请
    • 其核心内容是一个公钥(当然还附带了一些别的信息),在生成这个申请的时候,同时也会生成一个私钥,私钥要自己保管好
    • 查看的办法:openssl req -noout -text -in my.csr (如果是DER格式的话照旧加上-inform der)
  • PFX/P12
    • P12指的是PKCS #12格式。(可存储私钥和相关的X.509证书)
    • PKCS #12是微软PFX文件的替代者。通常这两个词可相互替代使用。
    • 这种格式标准巨复杂。
    • PFX使用的是DER编码,转换为PEM编码命令
      • openssl pkcs12 -in -out -nodes
    • 生成PFX格式文件命令
      • openssl pkcs12 -export -in -inkey -out -certfile
  • P7B/P7C
    • PKCS#7或者P7B格式以BASE64 ASCII格式存储,具有文件扩展名.p7b或者p7c
    • P7B文件仅仅包含证书和信任链证书(中间CA),不包括私钥。
    • 支持P7B文件的最常见平台是Windows和Java Tomcat。

参考资料:

  • https://zh.wikipedia.org/wiki/X.509
  • https://knowledge.digicert.com/generalinformation/INFO4448.html
  • https://www.cnblogs.com/guogangj/p/4118605.html

你可能感兴趣的:(HTTPS证书相关概念)