chain.pem 文件的用途是什么?

chain.pem 文件的用途是什么?

关于 chaim.pem 文件的常见问题;我使用从我的主机获得的 csr,并使用 LetsEncrypt 的 Certbot 生成 https 证书;我使用了以下命令

$ certbot certonly --manual --csr 文件与我的 csr.txt

certbot 生成了 3 个文件 0000_cert.pem、0000_chain.pem、0001_chain.pem;然后我使用 cert.pem 文件将证书安装回我的主机;一切都进行得相当顺利;

我的问题是“链”文件有什么用,因为我没有在任何地方使用它们;它们在什么场景中会有用?

答案1

您的 Certbot 输出略有异常。您应该收到一个“fullchain.pem”文件,其中包含所有正确顺序的内容,而不是几个单独的文件。

(更不用说手动安装本身——您必须实现自动化安装。)

我的问题是“链”文件用于什么

所有 WebPKI 证书颁发机构至少都有两层系统:

  1. 根 CA 证书安全地离线存储,用于签署中间(颁发)CA 证书。
  2. 在线存储的中间 CA 为服务器(最终实体)签署证书。

例如,这是一张图表让我们加密其层次结构通常是:

Root: "DST Root CA X3" (or possibly "ISRG Root X1")
\-- Issuing: "Let's Encrypt R3"
    \-- End-entity: "letsencrypt.org"

大多数 TLS 客户端(浏览器、操作系统)仅附带证书已预安装。这样,每次 CA 更改其基础设施时,它们都无需更新 - 只需在添加或删除 CA 本身时更新即可。

但是,要验证每个证书的签名,您需要需要拥有紧接在前的证书(例如,您不能仅使用根 CA 直接验证服务器证书的签名 - 两者之间没有直接的加密关系)。

这意味着客户端必须拥有所有中间证书才能完成根 CA 之间的证书链。如果缺少任何中间证书,客户端将不再拥有足够的信息来验证其余证书。

对于 HTTPS,基本的方法是让服务器发送其所有链证书 - 因为服务器应该已经拥有它们。

一些网络浏览器对此有替代机制 - 例如,Firefox 会保留“以前见过的”中间体的缓存,而 Windows 则尝试使用证书中的 AIA URL 下载中间体。

但并非所有浏览器都这样做,而且重要的是,大多数非 Web TLS 客户端根本没有任何此类替代方案。虽然不完整的链通常适用于 HTTPS,但它不适用于 SMTP 或 IRC 之类的东西。

然后我使用 cert.pem 文件将证书安装回我的主机;一切都进行得相当顺利

最有可能的是,它只适用于一些用户(主要是 Windows 和 Firefox),但许多其他用户却被排除在外。不要以为因为它在您自己的系统上运行良好,就一定可以在其他所有人的系统上运行良好。

诸如此类的工具SSL 实验室或者gnutls-cli example.com:443会在服务器未发送完整链的情况时向您发出警告。

然而,无论“你的主机”是什么,也有可能主动下载来自 AIA 信息的中间件(我有点怀疑 Windows 的 IIS可能正在这样做),自动填补空白。但如果在任何地方这样做,那也相当罕见。

常规 Certbot 使用

通常,Certbot 将收到的证书以“即用型”格式存储在/etc/letsencrypt/live文件夹中,其中 fullchain.pem 包含主机的证书以及任何必要的父证书。例如,在 Apache httpd 2.4.x 中,您将使用:

SSLCertificateFile    /etc/letsencrypt/live/example.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.net/privkey.pem

答案2

可以找到一个简单的解释这里

首先,什么是PEM:

PEM 是一种常用于存储加密密钥的容器文件格式。它可用于多种用途,因为它仅定义用于存储少量数据的文件的结构和编码类型。

什么是PEM文件:

PEM 只是一个标准;它们包含文本,并且格式规定 PEM 文件以...开头

与 SSL 证书一起使用的 Pem 文件:

具有 SSL 证书的 PEM 文件

PEM 文件用于存储 SSL 证书及其关联的私钥。完整的 SSL 链中有多个证书,它们的工作顺序如下:

最终用户证书,由证书颁发机构 (CA) 分配给您的域名。这是您在 nginx 和 Apache 中用于加密 HTTPS 的文件。最多四个可选的中间证书,由较高级别的证书颁发机构颁发给较小的证书颁发机构。根证书是链上的最高证书,由主 CA 自签名。

那么chain.pem是什么?

chain.pem 是链的其余部分;在本例中,它只是 LetsEncrypt 的根证书

这些chain.pem文件包含您的中级证书。

安装 SSL 证书时,必须安装站点证书,还必须安装中间证书。这些证书很重要。如上所述这里

中间证书可替代根证书,因为根证书有自己的安全层,可确保其密钥无法获取。中间证书在最终实体证书和根证书之间充当“信任链”。

这里

由于具有额外的安全级别,所有主要的证书颁发机构都使用中间证书。这有助于在发生错误颁发或安全事件时将损失降至最低并隔离开来。您无需撤销根证书以及它所签名的所有证书,只需撤销中间证书,这只会导致从该中间证书颁发的证书组失去信任。

相关内容