S.M*_*avi 0 c++ ssl qt qtquick2 lets-encrypt
我使用 Qt 和 QtQuick 技术开发了一个跨平台应用程序。与后端服务器的通信由 Let's Encrypt SSL 保护。
但在 2021 年 9 月,Qt 应用程序开始报告“SSL 握手失败”错误,而客户端或服务器没有任何更改。问题是什么?
经过一番研究,我找到了原因:
\nhttps://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/
\n\n\nDST Root CA X3 将于 2021 年 9 月 30 日到期。这意味着那些不信任 ISRG Root X1 的旧设备在访问使用 Let\xe2\x80\x99s Encrypt 证书的网站时将开始收到证书警告。
\n
因此,我必须手动将 ISRG Root X1 证书添加到我的应用程序的受信任 CA 数据库中。为了实现这一目标,我使用 FireFox 访问了 Let\'s Encrypt 站点,并将 ISRG Root X1 证书 PEM 文件保存到我的应用程序资源中(到qrc文件中)。然后我使用以下代码将其添加到默认 CA 证书数据库中:
//Adding CA root certificate of the Let\'sEncrypt into default CA DB\n//for Qt 5.15+\n#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)\nqDebug() << "loading embedded \\"ISRG Root X1\\" CA cert:" << QSslConfiguration::defaultConfiguration().addCaCertificates(":/ca_certs/isrg_root_x1.pem");\n#else\nqDebug() << "loading embedded \\"ISRG Root X1\\" CA cert:" << QSslSocket::addDefaultCaCertificates(":/ca_certs/isrg_root_x1.pem");\n#endif\nRun Code Online (Sandbox Code Playgroud)\n请注意,Qt 5.15+ 有一种新方法可以执行此操作,而旧方法已被弃用。我使用 Qt 5.12,所以我需要添加两种方式(为了让我的应用程序更适合 Qt 5.15+),如您所见。
\n感谢 Qt 良好的架构,您不需要做任何更多的改变。
\n| 归档时间: |
|
| 查看次数: |
1219 次 |
| 最近记录: |