QSsl错误:证书是自签名的,不受信任
QSslError: The certificate is self-signed, and untrusted
我正在尝试向证书自签名的Web服务发送休息请求。目前,我正在创建一个请求,将 url 和 auth.key 设置为标头。然后我告诉回复忽略这个 ssl 错误:
QSslError error(QSslError::SelfSignedCertificate);
QList<QSslError> expectedSslErrors;
expectedSslErrors.append(error);
QNetworkReply *reply = _accessManager.put(request, ""); // no requestbody
reply->ignoreSslErrors(expectedSslErrors);
当我运行它时,出现以下 ssl 错误:
9 - 证书是自签名的,不受信任
后跟网络错误 nr 6:
请求失败,并显示消息:SSL 握手失败
目前我忽略了所有错误,因为它似乎是唯一有效的方法。感觉很脏。
如果有人知道我做错了什么,将不胜感激!
编辑:
更改为:
QList<QSslError> expectedSslErrors;
expectedSslErrors.append(QSslError::SelfSignedCertificate);
expectedSslErrors.append(QSslError::CertificateUntrusted);
reply->ignoreSslErrors(expectedSslErrors);
但仍然得到同样的错误...
证书是自签名的,不受信任
问题是"不受信任"的部分。您必须提供自签名证书作为QSslError
的第二个参数。
编辑:根据源代码,通过比较错误代码和证书来完成实际收到的SSL错误和传递给ignoreSslErrors
的错误之间的比较。
因此,如果 OpenSSL 返回的错误包含证书,例如 QSslError::SelfSignedCertificate
,则必须始终将证书传递给构造函数QSslError
否则比较将失败。
但是,您也可以通过将信号sslError()
连接到一个插槽来手动忽略该错误,在该插槽中检查错误列表是否仅包含自签名证书错误,然后调用ignoreSslErrors()
(不带任何参数)。
阅读文档,您需要做的是在响应 QNetworkReply 的插槽上调用 ignoreSslErrors::sslErrors 信号
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- QSsl错误:证书是自签名的,不受信任