我想知道在建立 SSL 连接时通常如何检查自签名证书。
让我们看一下自签名证书
:
客户端和服务器提供带有私钥的
自签名证书
(例如使用 OpenSSL 创建)当
服务器
收到来自客户端
的"ClientHello"
消息时,他正在向客户端传输他的证书。ServerHelloDone
消息发送给客户端,然后客户端需要验证证书。
客户端在收到服务器证书时,验证证书的步骤是什么?
我知道通常不应该使用自签名证书,事实上没有第三方实例 (CA)
可以检查。
客户端是直接接受服务器证书而没有任何进一步的步骤,还是客户端在建立连接之前已经提供了服务器“根”证书?
最佳答案
When the client is receiving the server certificate, what are his steps to verify this certificate?
客户端执行证书链接引擎来验证证书。重要的检查是:
1) 证书签名
2) 证书主题。主题字段中的 CN 属性(或主题备用名称中的适当名称)必须与输入的 URL 匹配。例如,您连接到 www.example.com,那么这个名称必须列在主题和/或 SAN 扩展名中。
3) 证书有效期
4) 证书吊销
5) 证书链接到受信任的根(以自签名形式呈现)
6) RFC5280中定义的其他检查(包括但不限于:增强的 key 使用、策略约束、名称约束等)。
在自签名证书的情况下,证书链由单个元素组成——服务器证书。在这种情况下,客户端只跳过第 4 步,因为自签名证书无法撤销。并且这个自签名证书必须作为受信任的根证书被客户端明确信任,因为所有自签名证书都是根证书。
关于SSL:了解自签名证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27929357/