更新
在某些装有 Windows 7 和 10 的 PC 中,问题仍然存在。Wireshark 声明请求正在使用 Tlsv1.0 完成。
我读到有一种添加注册表项的解决方法,但尽管我尝试过但它们都不起作用(禁用 Tls1.0 并启用 Tls1.1 和 1.2),但我不希望我的客户执行这样的过程。我想告诉我的应用程序只使用 1.2。
EOU
我使用 Qt 编写了一个应用程序,它在https://www.myprefix.mydomain.com中对我的网站执行标准获取请求。
现在,Windows 上部署的应用程序可以在具有 TLS 1.2 版的计算机上运行,但如果计算机启用了 TLS 1.0,则请求会被阻止。总结这一点,我写了一个最小的应用程序(你好世界,你有服务器吗?)并检查了两台计算机中的 Wireshark 条目,这似乎是唯一的区别。根据 Wireshark 的说法,如果 TLS1.0 可用,那么我的应用程序使用 TLS1.0(无论是否存在 1.2)并被阻止。
我知道 1.0 不再被认为是安全的,所以我想告诉我的 Qt 应用程序只使用 TLS1.+。
我宁愿不使用 http(稍后我会得到敏感信息)也不告诉我的客户禁用 TLS1.0。这可以硬编码到 Qt 应用程序中吗?
我试过这个:
QSslConfiguration config = QSslConfiguration::defaultConfiguration();
config.setProtocol(QSsl::TlsV1_2);
QSslConfiguration::setDefaultConfiguration(config);
但是该应用程序在可用时仍然使用 TLS1.0,并且服务器会阻止请求(这是正确的)。