我在使用 Wget 通过ftp.gnu.org使用Let's Encrypt X3根目录通过 HTTPS 下载文件时遇到问题。Let's Encrypt X3是交叉认证的,这意味着它有一个发行者并且它不是自签名的。使用Let's Encrypt X3时,Wget 失败并出现错误,即使我试图根信任 Let's Encrypt 证书,它也找不到颁发者证书。
我访问了RFC 4158,Internet X.509 公钥基础设施:认证路径构建以了解行为应该是什么。该文档详细讨论了从最终实体或订户证书到 CA 根和信任锚的构建路径。这是人们所期望的。
但是,第 1.3 节提供了术语,并定义了信任锚:
信任列表:信任锚列表。
信任锚:可信公钥和对应私钥所属实体名称的组合。
信任锚证书:用于证书路径处理的信任锚的自签名证书。
“信任锚证书”和要求“自签名”的定义意味着我们不能根信任从属证书,例如经过交叉认证的Let's Encrypt X3根。
我的问题是,为什么 RFC 会这样做?为什么我们被迫使用自签名证书作为锚点,并包含 PKI 中不需要的部分,这些部分只会使路径构建复杂化并增加攻击面?