openSSL 密钥和证书

openSSL 密钥和证书

据我所知,在经过身份验证的 SSL 连接中,客户端和服务器都拥有私钥,并在建立安全连接之前通过连接提供其证书(以及相应的公钥)。但是,我有点困惑,因为在服务器和客户端使用这些证书和密钥时,openSSL 连接是正常的,但是...如果由 openssl 命令生成的客户端密钥/公钥是由与服务器私钥不同的 CA 创建的,则连接不应该发生,但在我尝试使用 openSSL 进行的实验中并没有发生这种情况。

这难道不是意料之外的吗?不同的 CA 在客户端和服务器端拥有不同的密钥集是否很常见?OpenSSL 是否会为每个会话动态生成私钥,并且不依赖于客户端?有谁知道这些密钥/证书在服务器和客户端如何工作,这些密钥和证书之间是否存在任何关系/依赖关系?

答案1

对于大多数 SSL 连接,客户端没有出示证书。仅服务器经过身份验证。

但是如果发送了客户端证书,则它不需要以任何方式与服务器证书匹配。服务器完全可以决定如何验证客户端;例如,它可能将特定 CA 或特定证书指纹列入白名单,或者只是接受任何东西。

DH 和 ECDH 密码套件也使用公钥,但不是相同的——每一方都会生成一个临时 DH 密钥对,并使用证书密钥对对其进行签名,或者以未签名的形式发送。

相关内容