我有一个场景,一些旧客户端只能支持 MD5 和 SHA1 签名。显然,这些通常被认为已弃用,但我仍然需要支持它们。无法升级这些客户端(固件更新不再发布,理想情况下我想砍掉所有这些设备,但这也不可行)。
假设我仍然可以获得 MD5 或 SHA1 签名证书。
是否可以在任何(https)服务器上根据客户端在首次连接时发送的 ClientHello 块中包含的传入 TLS 版本提供不同的证书?
我相信应该可以通过编写一个小的“代理”来读取从客户端传入的前几个字节,然后在最坏的情况下将连接拼接到服务不同请求的备用端口,但如果可能的话,我更愿意如果存在支持此类功能的现有 Web 服务器,请避免这种情况。
旁白:据我了解,SSL/TLS 协议确实包含针对降级攻击的保护,因此如果服务器支持 1.2 并且客户端也支持 1.2,那么如果降级到 1.0,那么连接应该终止(如果是主动人为-中间攻击)。我相信这应该可以降低提供 MD5 或 SHA1 签名证书的风险,至少在仍然支持旧 SSL/TLS 版本的同时可以做到这一点。