it-swarm.cn

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

我负责维护两个Debian服务器。每次我必须对安全证书做任何事情时,我都会使用Google进行教学,并最终失败。

但是,在搜索中,我经常遇到不同的文件格式(.key.csr.pem),但我一直无法找到关于每种文件格式用途的良好解释。

我想知道ServerFault的好伙伴是否可以对此事提供一些澄清?

1413
Noah Goodrich

SSL已经存在了很长时间,您可能会认为容器格式已经达成共识。你是对的,有。发生的标准过多。这就是我所知道的,而且我敢肯定其他人也会加入。

  • 。csr-这是证书签名请求。某些应用程序可以生成这些文件以提交给证书颁发机构。实际格式为PKCS10,它在 RFC 2986 中定义。它包括所请求证书的一些/所有关键详细信息,例如主题,组织,状态,诸如此类,以及要签名的证书的公钥。这些由CA签名并返回证书。返回的证书是公共的certificate(包括公共密钥但不包括私有密钥),它本身可以有两种格式。
  • 。pem-在RFC中定义 14211424 ,这是一种容器格式,可能包括仅公共证书(例如Apache安装和CA证书文件/etc/ssl/certs),也可以包括完整的证书链,包括公钥,私钥和根证书。令人困惑的是,由于PKCS10格式可以转换为PEM,因此它也可能对CSR进行编码(例如 此处 )。名称来自 隐私增强邮件(PEM) ,这是一种失败的安全电子邮件方法,但是其使用的容器格式仍然存在,并且是x509 ASN.1密钥的base64转换。
  • 。key-这是PEM格式的文​​件,仅包含特定证书的私钥,仅是常规名称,而不是标准化名称。在Apache安装中,该位置通常位于/etc/ssl/private。这些文件上的权限非常重要,如果设置错误,某些程序将拒绝加载这些证书。
  • 。pkcs12 .pfx .p12-最初由RSA在 公钥密码标准 (缩写为PKCS)中定义, 12“变体最初由Microsoft增强,后来提交为 RFC 7292 。这是包含公共和私有证书对的密码容器格式。与.pem文件不同,此容器是完全加密的。 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(或很少是.der)格式的文件,具有不同的扩展名,Windows Explorer将其识别为证书,.pem不是。
  • 。p7b .keystore-在 RFC 2315 中定义为PKCS数字7,这是Windows用于证书交换的格式。 Java本机理解这些,并且经常使用.keystore作为扩展名。与.pem样式的证书不同,此格式具有defined方式来包括证书路径证书。
  • 。crl-证书吊销列表。证书颁发机构产生这些证书是作为在到期之前取消对证书进行授权的一种方式。有时您可以从CA网站下载它们。

概括而言,有四种不同的方式来展示证书及其组成部分:

  • [〜#〜] pem [〜#〜]-由RFC控制,优先由开放源代码软件使用。它可以具有各种扩展名(.pem,.key,.cer,.cert等)
  • PKCS7-一种由Java)并由Windows支持的开放标准。不包含私钥材料。
  • PKCS12-后来在RFC中定义的Microsoft私有标准,提供了比纯文本PEM格式更高的安全性。它可以包含私钥材料。 Windows系统优先使用它,并且可以通过使用openssl将其自由转换为PEM格式。
  • [〜#〜] der [〜#〜]-PEM的父格式。将其视为base64编码的PEM文件的二进制版本很有用。在Windows之外,不是经常使用。

我希望这有帮助。

1730
sysadmin1138

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标准的更多详细信息,因为它与密钥和证书有关。

146
James F

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

57
mgold