为什么我需要 CSR 来生成证书?

时间:2021-01-22 20:20:48

标签: ssl openssl certificate csr

我生成了自己的 CA。为什么我需要来自其他网站(例如 facebook.com)的 CSR 为其生成证书?

CA 签署证书是一种类似“我,与公钥 xyz 相关的私钥的所有者,批准此证书有效”的声明。 为什么我们需要 facebook.com 的所有者说“请,公钥 xyz 的所有者,批准我的证书”(生成 CSR)?

我可能遗漏了与生成证书的数学公式相关的内容,但我不确定。

1 个答案:

答案 0 :(得分:2)

注意:这与编程无关,更适合于 security.SX。

从技术上讲,您不需要。要颁发身份证书(这是唯一一种常用的,但也有其他证书),您需要知道所颁发的当事人的身份和公钥证书,在这种情况下是 facebook。您可能还需要其他信息,例如使用生成的证书的目的,依赖者是谁或他们是什么样的,这通常会影响您需要放入的信任和/或策略信息证书。

证书的常用格式请求又名证书签名请求或 PKCS10 aka RFC2986 定义的 CSR 是表示此信息的标准化方式,它允许需要证书的实体(称为终端实体)或 EE)和证书颁发机构(称为 CA)以有效、可靠和准确无误地进行通信。它的优点是使用与X.509相同的格式来表示公钥,它可以处理多种算法,如果设计得当,可以在不改变标准和不改变处理它的代码的情况下扩展到将来处理新算法。它还对实体的“专有名称”使用相同的格式——尽管现在许多证书用于 HTTPS 或其他 SSL/TLS 服务器,它们使用主题备用名称扩展名(包含 DNS 名称) (s) 而不是 X.500 Distinguished Name),它的价值越来越低,即使在过去,它也需要由 CA 进行审查准确或至少可以接受并且没有误导性或欺骗性。

但是,如果您正在运行 CA,则没有技术原因您不能接受此信息的其他形式。几十年前,Netscape 发明了 SPKAC,它曾经由一些浏览器实现。其他形式仅受您的想象力的限制,以及其他人将要或必须做的工作以符合您的发明——如果他们有这样做的动机,他们可能没有这样做。

相关问题