SSL:了解自签名证书

SSL: Understanding self-signed-certificates

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

我们来看看self-signed certificates:

客户端在收到服务器证书的时候,验证这个证书的步骤是什么? 我知道通常不应该使用自签名证书,因为没有第三方实例 (CA) 可以检查。

客户端是直接接受服务器证书而没有任何进一步的步骤,还是客户端在建立连接之前已经提供了服务器 "root" 证书?

When the client is receiving the server certificate, what are his steps to verify this certificate?

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

1) 证书签名

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

3) 证书有效期

4) 证书吊销

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

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

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