开发者在迁移到 HTTPS 时面临的两大障碍是概念和术语。本指南简要概述了这两种方法。
摘要
- 使用公钥/私钥对浏览器和服务器之间的消息进行签名和解密。
- 证书授权机构 (CA) 是一个组织,负责担保公钥和公共 DNS 名称(例如“www.foobar.com”)之间的映射。
- 证书签名请求 (CSR) 是一种数据格式,它将公钥与有关密钥所有者实体的一些元数据捆绑在一起
什么是公钥和私钥对?
公钥/私钥对是一对非常大的数字,用作加密和解密密钥,并且具有特殊的数学关系。密钥对的常见系统是 RSA 密码体制。公钥用于加密消息,而这些消息只能使用相应的私钥进行解密。您的 Web 服务器会向全世界通告其公钥,而客户端(例如网络浏览器)会使用该公钥来引导与您的服务器建立安全信道。
什么是证书授权机构?
证书授权机构 (CA) 是一个组织,负责担保公钥与公开 DNS 名称(例如“www.foobar.com”)之间的映射。例如,客户端如何知道特定公钥是否是 www.foobar.com 的真实公钥?事先无法得知。CA 使用自己的私钥对网站的公钥进行加密签名,从而保证特定密钥是特定网站的真实密钥。此签名在计算上无法伪造。 浏览器(和其他客户端)会维护信任锚存储区,其中包含知名 CA 拥有的公钥,并使用这些公钥以加密方式验证 CA 的签名。
X.509 证书是一种数据格式,它将公钥与有关拥有该密钥的实体的一些元数据捆绑在一起。在网络中,密钥的所有者是网站运营商,重要的元数据是网络服务器的 DNS 名称。当客户端连接到 HTTPS Web 服务器时,Web 服务器会提供其证书供客户端验证。客户端会验证证书是否未过期、DNS 名称是否与客户端尝试连接的服务器名称匹配,以及已知的信任锚 CA 是否已对证书进行签名。在大多数情况下,CA 不会直接对网络服务器证书进行签名;通常,会有一个证书链将信任锚点链接到一个或多个中间签名者,最后链接到网络服务器自己的证书(最终实体)。
什么是证书签名请求?
证书签名请求 (CSR) 是一种数据格式,与证书一样,它将公钥与有关拥有该密钥的实体的一些元数据捆绑在一起。不过,客户端不会解读 CSR,而是由 CA 来解读。当您希望 CA 为 Web 服务器的公钥提供担保时,您需要向 CA 发送 CSR。CA 会验证 CSR 中的信息,并使用这些信息生成证书。然后,CA 会向您发送最终证书,您需要在 Web 服务器上安装该证书(或更可能是证书链)和私钥。