![Ssl 重新协商消息是否应该加密?](https://linux22.com/image/784000/Ssl%20%E9%87%8D%E6%96%B0%E5%8D%8F%E5%95%86%E6%B6%88%E6%81%AF%E6%98%AF%E5%90%A6%E5%BA%94%E8%AF%A5%E5%8A%A0%E5%AF%86%EF%BC%9F.png)
RFC5246 中未提及 Ssl 重新协商消息应加密。但使用 Windows Schannel API 时,我发现重新协商消息已加密。我尝试向 Windows 中的 Ssl 客户端发送未加密的精心设计的“服务器问候请求”,但客户端未接受,并返回一条 ALERT 消息,指出无法解密该消息。有没有什么想法,我可以在不加密握手消息的情况下进行 Ssl 重新协商?
答案1
SSL/TLS 协议要求所有握手消息都加密,以确保协商过程的机密性和完整性。根据 RFC 5246 中定义的规范,SSL/TLS 握手协议必须是安全的,以防止未经授权的各方篡改或窃听。
如果不加密握手消息,则无法执行 SSL/TLS 重新协商。SSL/TLS 协议的安全性取决于握手消息的加密,如果不应用此加密,则会产生可能被恶意行为者利用的漏洞。
Windows 中的 Schannel API 根据 RFC 5246 中定义的规范实现 SSL/TLS 协议,并且要求在重新协商过程中对所有握手消息进行加密。尝试发送未加密的“服务器问候请求”消息会导致错误,因为正如您所观察到的,客户端无法解密该消息。
总之,如果不加密握手消息,就无法执行 SSL/TLS 重新协商,并且尝试这样做会导致错误。