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