什么是Pem文件,它与其他OpenSSL生成的密钥文件格式有什么不同?

我负责维护两个Debian服务器。 每次我必须做任何安全证书,我谷歌的教程,并击败,直到它终于起作用。

然而,在我的search中,我经常遇到不同的文件格式( .key.csr.pem ),但是我从来没有find一个很好的解释每个文件格式的目的是什么。

我想知道ServerFault中的好人是否可以在这个问题上提供一些解释?

SSL已经存在了足够长的时间,你会认为会有容器格式的商定。 你是对的,有。 发生的标准太多了。 所以这就是我所知道的,而且我确信其他人会join进来。

  • .csr这是一个证书签名请求。 一些应用程序可以生成这些提交给证书颁发机构。 实际的格式是在RFC 2986中定义的PKCS10。 它包括所请求的证书的一些/所有关键细节,例如主题,组织,州,什么,以及要签名的证书的公钥 。 这些由CA签名并返回一个证书。 返回的证书是公共证书 (包括公钥但不是私钥),它本身可以是几种格式。
  • .pem在RFC 1421至1424中定义,这是一个容器格式,可以包含公共证书(例如Apache安装和CA证书文件/etc/ssl/certs ),也可以包含整个证书链,包括公钥,私钥和根证书。 令人困惑的是,它也可能编码一个CSR(例如这里使用的),因为PKCS10格式可以被翻译成PEM。 该名称来自隐私增强邮件(PEM) ,这是一种安全电子邮件的失败方法,但是它使用的容器格式依赖于它,并且是x509 ASN.1密钥的base64转换。
  • .key这是一个PEM格式的文​​件,只包含特定证书的私钥,仅仅是一个常规的名称,而不是标准的。 在Apache安装中,这经常驻留在/etc/ssl/private 。 这些文件的权限是非常重要的,如果设置错误,一些程序将拒绝加载这些证书。
  • .pkcs12 .pfx .p12最初由RSA在Public-Key Cryptography Standards中定义 ,“12”变体由Microsoft增强。 这是一个密码容器格式,包含公共和私人证书对。 与.pem文件不同,这个容器是完全encryption的。 Openssl可以把它变成一个带公钥和私钥的.pem文件: openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes

其他一些不时出现的格式:

  • .der一种用二进制编码ASN.1语法的方式,一个.pem文件只是一个Base64编码的.der文件。 OpenSSL可以将它们转换成.pem( openssl x509 -inform der -in to-convert.der -out converted.pem )。 Windows将这些视为证书文件。 默认情况下,Windows将使用不同的扩展名将证书导出为.DER格式的文件。 喜欢…
  • .cert .cer .crt具有不同扩展名的.pem(或很less.der)格式的文件,其中一个被Windows资源pipe理器识别为证书,而.pem不是。
  • .p7b在RFC 2315中定义,这是Windows用于证书交换的一种格式。 Java本地理解这些。 与.pem样式证书不同,此格式具有包含证书path证书的定义方式。
  • .crl证书吊销列表。 证书颁发机构生成这些证书是为了在到期之前取消对证书的授权。 您有时可以从CA网站下载它们。

总之,有四种不同的方式来提交证书及其组件:

  • PEM由RFCpipe理,优先被开源软件使用。 它可以有多种扩展名(.pem,.key,.cer,.cert等等)
  • PKCS7 Java使用的开放标准,由Windows支持。 不包含私人密钥材料。
  • PKCS12与纯文本PEM格式相比,提供更高安全性的专用标准。 这可以包含私人密钥材料。 它被Windows系统优先使用,可以通过使用openssl自由地转换成PEM格式。
  • DER PEM的父级格式。 将其视为base64编码的PEM文件的二进制版本很有用。 Windows以外的地方不常用。

我希望这有帮助。

它自己的PEM不是一个证书,它只是一种编码数据的方式。 X.509证书是一种通常使用PEM编码的数据。

PEM是X.509证书(其结构使用ASN.1定义),使用ASN.1 DER(区分编码规则)进行编码,然后运行Base64编码并在明文锚线(BEGIN CERTIFICATE和END CERTIFICATE )。

您可以使用PKCS#7或PKCS#12表示法来表示相同的数据,并且可以使用openssl命令行实用程序来执行此操作。

PEM的明显好处是,粘贴到电子邮件正文中是安全的,因为它具有锚线并且是7位清洁的。

RFC1422具有关于PEM标准的更多细节,因为它涉及密钥和证书。

有时.crt文件已经是一个.pem 。 请参阅: https : //stackoverflow.com/questions/991758/openssl-pem-key