SSL:了解自签名证书
SSL: Understanding self-signed-certificates
我想知道在建立 SSL 连接时通常如何检查自签名证书。
我们来看看self-signed certificates
:
客户端和服务器提供 self-signed certificate
及其私钥(例如使用 OpenSSL 创建)
当 server
收到来自 client
的 "ClientHello"
消息时,他正在向客户端传输他的证书。
ServerHelloDone
消息发送到客户端,然后客户端需要验证证书。
客户端在收到服务器证书的时候,验证这个证书的步骤是什么?
我知道通常不应该使用自签名证书,因为没有第三方实例 (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 步,因为自签名证书无法撤销。并且此自签名证书必须被客户端显式信任为受信任的根证书,因为所有自签名证书都是根证书。
我想知道在建立 SSL 连接时通常如何检查自签名证书。
我们来看看self-signed certificates
:
客户端和服务器提供
self-signed certificate
及其私钥(例如使用 OpenSSL 创建)当
server
收到来自client
的"ClientHello"
消息时,他正在向客户端传输他的证书。ServerHelloDone
消息发送到客户端,然后客户端需要验证证书。
客户端在收到服务器证书的时候,验证这个证书的步骤是什么?
我知道通常不应该使用自签名证书,因为没有第三方实例 (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 步,因为自签名证书无法撤销。并且此自签名证书必须被客户端显式信任为受信任的根证书,因为所有自签名证书都是根证书。