SSL 和 X.509 证书有什么区别?

信息安全 tls 证书 openssl x.509
2021-08-25 13:26:57

我曾经openssl创建过 X.509 证书,但我不太了解 X.509 和 SSL 证书之间的关系。他们是一样的吗?SSL 证书只是用于 SSL 的 X.509 证书吗?

2个回答

SSL 是迄今为止 X.509 证书的最大用途,许多人可以互换使用这些术语。然而,它们并不相同。“SSL 证书”是具有扩展密钥用法的 X.509 证书:服务器身份验证 (1.3.6.1.5.5.7.3.1)。

其他“常见”类型的 X.509 证书是客户端身份验证 (1.3.6.1.5.5.7.3.2)、代码签名 (1.3.6.1.5.5.7.3.3),还有少数其他类型用于各种加密和身份验证方案。

X.509 证书是一种通用的、高度灵活的格式。SSL(现在称为“TLS”)使用 X.509 证书。“SSL 证书”是其内容使其可用于 SSL 的证书(通常可用于 SSL服务器)。

特别是,在 SSL 的大多数用法中,客户端将希望在证书中看到预期的服务器名称。在 Web 上下文 (HTTPS) 中,“预期的服务器名称”是出现在 URL 中的名称;客户端执行的检查在RFC 2818(第 3.1 节)中进行了描述。此外,当客户端和服务器“谈论 SSL”时,他们同意使用加密算法,其中一些暗示使用服务器的公钥,如证书中所示;例如,如果客户端和服务器选择了一个密码套件,上面写着“RSA 密钥交换”,那么服务器证书必须包含一个 RSA 公钥,并且如果证书包含限制使用该密钥的授权方式的扩展(例如Key Usage扩展名),那么这些扩展名必须允许“加密”使用,因为这就是 SSL 中的“RSA 密钥交换”所暗示的。

证书的其他功能可能会禁止 SSL 服务器的使用,其中“禁止”的意思是“客户端会尖叫和结结巴巴,并向用户显示红色可怕的警告”。例如,证书可能包含一个Extended Key Usage扩展,其中列出了使用它的实体的详尽“角色”列表;如果存在扩展,那么它应该包含“服务器身份验证”或特殊的“任何使用”指示符。

有很多细节需要关心。商业 CA 将整个事情概括为“SSL 证书”,真正的意思是“完全符合 SSL 规定的 X.509 证书,所有客户都会对此感到满意”。