SSL:了解自签名证书

Lev*_*han 3 ssl openssl certificate x509

我想知道在建立 SSL 连接时通常如何检查自签名证书。

让我们看一下self-signed certificates

  • 客户端和服务器提供self-signed certificate其私钥(例如使用 OpenSSL 创建的)

  • server收到"ClientHello"来自 的消息时client,他正在将其证书传输给客户端。

  • 消息ServerHelloDone发送到客户端,然后客户端需要验证证书。

当客户端收到服务器证书时,他如何验证该证书? 我知道通常不应该使用自签名证书,因为事实上没有第三方实例(CA)可供检查。

客户端是否只是接受服务器证书而不进行任何进一步的步骤,或者客户端在建立连接之前是否已经提供了服务器“根”证书?

Cry*_*t32 5

当客户端收到服务器证书时,他如何验证该证书?

客户端执行证书链引擎来验证证书。重要的检查是:

1)证书签名

2)证书主题。主题字段中的 CN 属性(或主题备用名称中的适当名称)必须与输入的 URL 匹配。例如,您连接到 www.example.com,则该名称必须列在主题和/或 SAN 扩展名中。

3) 证书有效性

4) 证书吊销

5) 证书链至受信任的根(以自签名形式呈现)

6) RFC5280中定义的其他检查(包括但不限于:增强密钥使用、策略约束、名称约束等)。

在自签名证书的情况下,证书链由单个元素组成——服务器证书。在这种情况下,客户端仅跳过步骤 4,因为自签名证书无法撤销。并且此自签名证书必须被客户端明确信任为受信任的根证书,因为所有自签名证书都是根证书。

  • 通常,终端实体(例如服务器)和根证书是单独的证书。但是,RFC5280 不限制同时使用单个证书作为最终实体和根证书,因为它们(服务器验证和证书链验证)是单独的例程。这是自签名证书的正常情况。 (2认同)