Qt应用程序 - 使用TLS1.0

时间:2018-04-02 12:18:30

标签: qt tls1.2 tls1.0

更新

使用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,服务器会阻止请求(正确地说是这样)。

1 个答案:

答案 0 :(得分:2)

Qt的预构建软件包支持OpenSSL(在Windows和Linux上,macOS默认使用SecureTransport框架),但它们不提供它,因为某些国家/地区对于具有加密功能的软件存在特定限制。

因此,如果您的应用程序正常运行并且没有在Windows计算机上专门安装OpenSSL,则意味着它的副本存在于您的系统中。您应该找到它,如果可能,从PATH环境变量中删除包含文件夹。

接下来,您应该获取最新版本的OpenSSL。然后,您可以复制应用程序文件夹中的dll以确保它们被选中修改Qt Creator中的PATH环境变量(“项目”面板的“运行”部分),以便您的应用程序可以找到它。

请注意,您目前必须使用OpenSSL 1.0.X.如果你想要1.1支持,你可以从Qt 5.10开始,但你必须自己重新构建Qt。