我一直在学习 SSL/TLS 协议(来自https://www.rfc-editor.org/rfc/rfc5246)并且有一些关于该协议的概念性问题。
- 客户端和服务器在选择 SSL/TLS 版本和密码套件期间交换“hello”消息。更具体地说,客户端建议一个密码套件列表,然后服务器选择一个(如果服务器没有选择任何东西,握手失败)。现在,服务器是否选择与证书中使用的密码套件相对应的密码套件?
例如:运行openssl x509 -in <server_cert>.pem -text -noout
为您提供有关服务器证书的信息。在示例证书上,我看到公钥算法是 rsaEncryption(2048 位),签名算法是 sha256WithRSAEncryption。这不是已经预先确定了握手中使用的密码套件的一部分吗?
- 让我们假设服务器和客户端就密码套件达成一致。现在,我还看到客户也可以稍后在握手时出示证书。这是否意味着客户端证书上的密码必须与所选的密码套件兼容?
(类似的问题,但没有回答我想要的:Picking cipher suites for HTTPS)