AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1642520
Accepted
joedotnot
joedotnot
Asked: 2021-04-18 01:29:46 +0800 CST2021-04-18 01:29:46 +0800 CST 2021-04-18 01:29:46 +0800 CST

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

  • 772

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

$ certbot certonly --manual --csr file-with-my-csr.txt

certbot产生了3个文件0000_cert.pem、0000_chain.pem、0001_chain.pem;然后我使用 cert.pem 文件将证书安装回我的主机;一切都很顺利。

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

https tls
  • 2 2 个回答
  • 9003 Views

2 个回答

  • Voted
  1. Best Answer
    user1686
    2021-04-18T01:51:49+08:002021-04-18T01:51:49+08:00

    您的 Certbot 输出有点不寻常。您应该已经收到了一个“fullchain.pem”文件,其中包含按正确顺序排列的所有内容,而不是几个单独的文件。

    (更不用说手动安装本身了——你将不得不自动化这个。)

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

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

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

    例如,这是Let's Encrypt的图表,其层次结构通常是:

    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 Labs等工具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
    
    • 4
  2. Reddy Lutonadio
    2021-04-18T01:42:10+08:002021-04-18T01:42:10+08:00

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

    首先,什么是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 证书时,您必须安装站点证书以及中间证书。有重要的。如此处所述:

    中间证书可替代根证书,因为根证书有自己的安全层,可确保其密钥仍然无法获得。中间证书在终端实体证书和根证书之间起到“信任链”的作用。

    在这里:

    由于额外的安全级别,所有主要的证书颁发机构都使用中间证书。这有助于在发生误发或安全事件时最大限度地减少和划分损害。与其撤销根证书和它签署的每个证书,不如撤销中间证书,这只会导致从该中间证书颁发的证书组不受信任。

    • 3

相关问题

  • 如何验证 SSL 证书文件是否与密钥文件匹配?

  • 如何使 minikube 服务器 tls 可卷曲?

  • BitsAdmin URI 查询 → 无法将文件添加到作业 - 0x80070057 参数不正确

  • 如何设置 DNS、AWS S3、AWS Cloudfront 和 AWS Certificate Manager 以保护多个站点

  • wget 返回 404 错误

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve