我想知道如何在SSL连接建立中检查自签名证书。
让我们看看self-signed certificates
:
客户端和服务器提供self-signed certificate
及其私钥(例如使用OpenSSL创建)
当server
收到来自"ClientHello"
的{{1}}讯息时,他正在将证书传送给客户。
client
消息被发送到客户端,然后客户端需要验证证书。 当客户端收到服务器证书时,他验证此证书的步骤是什么?
我知道通常不应该使用自签名证书,因为没有第三方实例ServerHelloDone
可以检查。
客户端是否只是接受服务器证书而没有任何进一步的步骤,或者客户端是否已经提供服务器" root"连接建立之前的证书?
答案 0 :(得分:2)
当客户端收到服务器证书时,他验证此证书的步骤是什么?
客户端执行证书链引擎以验证证书。重要的检查是: 1)证书签名 2)证书科目。 “主题”字段中的CN属性(或“主题备用名称”中的相应名称)必须与输入的URL匹配。例如,您连接到www.example.com,则此名称必须列在主题和/或SAN扩展中。 证书有效性 4)证书撤销 5)证书链直到受信任的根(以自签名形式呈现) 6)RFC5280中定义的其他检查(包括但不限于:增强密钥使用,策略约束,名称约束等)。
在自签名证书的情况下,证书链由单个元素 - 服务器证书组成。在这种情况下,客户端仅跳过步骤4,因为无法撤消自签名证书。此自签名证书必须由客户端明确信任为受信任的根证书,因为所有自签名证书都是根证书。