证书相关知识

签发证书命令 :

  • 生成私钥:openssl genrsa -out helios.key 1024
  • 通过私钥生成公钥:openssl rsa -in helios.key -pubout -out helios.pem
  • 生成证书签名请求:openssl req -key helios.key -new -out helios.req
  • CA签发证书:openssl x509 -req -in helios.req -CA cacertificate.pem -CAkey caprivate.key -out helioscertificate.pem
  • 查看证书签名请求文件内容:openssl req -in helios.req -noout -text

一、编码格式

转载自:https://www.cnblogs.com/workharder/p/13051052.html

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

  1. PEM - Privacy Enhanced Mail
    打开看文本格式,以-----BEGIN...开头,-----END...结尾,内容是 BASE64 编码。
    查看 PEM 格式证书的信息:openssl x509 -in certificate.pem -text -noout
    Apache 和 UNIX 服务器偏向于使用这种编码格式。

  2. DER - Distinguished Encoding Rules
    打开看是二进制格式,不可读。
    查看 DER 格式证书的信息:openssl x509 -in certificate.der **-inform der** -text -noout
    Java 和 Windows 服务器偏向于使用这种编码格式。

二、相关的文件扩展名

这是比较误导人的地方,虽然我们已经知道有 PEM 和 DER 这两种编码格式,但文件扩展名并不一定就叫PEM或者DER,常见的扩展名除了 PEM 和 DER 还有以下这些,它们除了编码格式可能不同之外,内容也有差别,但大多数都能相互转换编码格式。

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

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

  3. KEY
    通常用来存放一个公钥或者私钥,并非 X.509 证书。编码同样的,可能是 PEM,也可能是 DER。
    查看 KEY 的办法:openssl rsa -in mykey.key -text -noout
    如果是 DER 格式的话,同理应该这样了:openssl rsa -in mykey.key -text -noout -inform der

  4. CSR
    Certificate,Signing Request,即证书签名请求。这个并不是证书,而是向权威证书颁发机构获得签名证书的申请,其核心内容是一个公钥(当然还附带了一些别的信息)。在生成这个申请的时候,同时也会生成一个私钥,私钥要自己保管好。
    查看方式:openssl req -noout -text -in my.csr
    如果是 DER 格式:openssl req -noout -text -in my.csr -inform der

  5. PFX/P12
    predecessor of PKCS#12,对 unix 服务器来说,一般 CRT 和 KEY 是分开存放在不同文件中的,但 Windows 的 IIS 则将它们存在一个 PFX 文件中,(因此这个文件包含了证书及私钥)这样会不会不安全?应该不会,PFX 通常会有一个“提取密码”,你想把里面的东西读取出来的话,它就要求你提供提取密码,PFX 使用的时 DER 编码,如何把 PFX 转换为 PEM 编码?
    openssl pkcs12 -in for-iis.pfx -out for-iis.pem -nodes
    这个时候会提示你输入提取代码,for-iis.pem 就是可读的文本。
    生成 pfx 的命令类似这样:openssl pkcs12 -export -in certificate.crt -inkey privateKey.key -out certificate.pfx -certfile CACert.crt
    其中 CACert.crt 是 CA(权威证书颁发机构)的根证书,有的话也通过 -certfile 参数一起带进去。这么看来,PFX 其实是个证书密钥库。

三、自己的理解

PEM 和 DER是不同的编码方式,PEM在 linux 上常用,DER 在 window 上常用,可以相互转换。

在 linux 上常用 crt 和 key 俩文件,在 window 常用 PFX,PFX 里边包含证书和私钥,可以用来生成,也可以通过证书和私钥合成 PFX,都是可以的。

你可能感兴趣的:(证书相关知识)