首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2021年9月加密时出现"SSL握手失败“错误

2021年9月加密时出现"SSL握手失败“错误
EN

Stack Overflow用户
提问于 2021-10-03 18:21:49
回答 1查看 516关注 0票数 0

我使用Qt和QtQuick技术开发了一个跨平台的应用程序。与后端服务器的通信是通过让我们加密SSL来保护的。

但在2021年9月,Qt应用程序开始报告"SSL握手失败“错误,客户端或服务器没有任何更改。有什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2021-10-03 18:21:49

经过一番研究,我找到了原因:

https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/

DST根CA X3将于2021年9月30日到期。这意味着那些不信任ISRG Root X1的旧设备在访问使用“让我们加密证书”的站点时将开始收到证书警告。

因此,我必须手动将ISRG根X1证书添加到我的应用程序的可信CA数据库中。为了实现这一点,我访问了让我们使用FireFox进行加密的站点,并将ISRG Root X1证书PEM文件保存到我的应用程序资源中(保存到qrc文件中)。然后,我使用以下代码将其添加到默认CA证书数据库中:

代码语言:javascript
复制
//Adding CA root certificate of the Let'sEncrypt into default CA DB
//for Qt 5.15+
#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
qDebug() << "loading embedded \"ISRG Root X1\" CA cert:" << QSslConfiguration::defaultConfiguration().addCaCertificates(":/ca_certs/isrg_root_x1.pem");
#else
qDebug() << "loading embedded \"ISRG Root X1\" CA cert:" << QSslSocket::addDefaultCaCertificates(":/ca_certs/isrg_root_x1.pem");
#endif

请注意,对于Qt 5.15+,有一种新的方法可以做到这一点,而旧的方法已被弃用。我使用的是Qt 5.12,所以我需要添加两种方式(以使我的应用程序更好地支持Qt 5.15+),如您所见。

多亏了Qt良好的架构,你不需要做更多的修改。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69427667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档