Qt&SSL,握手失败
Qt & SSL, Handshake failed
我有问题。我制作了一个连接到HTTPS网站的QT应用程序。在我的工作机器上,一切正常。当我尝试在干净的Windows 7机器上测试我的应用程序时,我观察到以下问题:
我安装了新鲜的Win7 Machine (安装了所有更新),启动我的应用程序后,我会得到 ssl握手失败错误,signal(sslerrors(qnetworkreply* qnetworkreply*,QLIST))发出两个空错误字符串和 error = qsslerror :: noError 。我真的在搜索整天为什么会发生这种情况,也可以通过示例 securesocketclient repares securesocketclient和域" google.com"来复制它。
现在,我发现,一旦我启动了Internet Explorer访问https://www.google.com,我的应用程序也可以按预期工作,并且没有进一步的握手错误。
顺便说一句,您要访问哪个站点都没关系 - 这与Google.com无关。
有人可以向我解释为什么会发生这种情况?它是OpenSSL还是QT或两者?
的错误update
我找到了一种为自己解决这个问题的方法,实施以下忽略逻辑:
QSslError ignoreNOErrors(QSslError::NoError);
foreach(QSslError error, errors)
if(error.error() != QSslError::NoError)
qDebug() << error.errorString();
QList<QSslError> expectedSslErrors;
expectedSslErrors.append(ignoreNOErrors);
reply->ignoreSslErrors(expectedSslErrors);
谢谢
您可以使用qsslconfiguration :: setPeerVerifyMode()忽略证书验证:
QSslConfiguration conf = request.sslConfiguration();
conf.setPeerVerifyMode(QSslSocket::VerifyNone);
request.setSslConfiguration(conf);
我在Mac上遇到了同一问题,QT 5.5和5.6。当我升级到5.7时,它已解决。希望如果您仍在面对这个问题,可能会有所帮助。
请看一下此QT错误
[这是SO:D]
相关文章:
- 如果没有malloc,链表实现将失败
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- 视图中的参数推导失败:take_while
- 链接到自行创建的dll失败
- SSL上的`curl_easy_send`和`curl_asy_recv`:如何处理`CURLE_AGAIN`
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- gcc和c++17的过载解析失败
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- curl_easy_perform() 失败:SSL 对等证书或 SSH 远程密钥不正常
- Arduino ESP8266HTTPClient:握手失败(SSL 错误 40)
- libgit2:git_clone() 失败并出现"failed to create ssl object"错误
- vcpkg 安装失败,并显示"SSL 连接错误"
- 尝试从 c++ 运行 https 代码时,SSL 握手失败
- Qt&SSL,握手失败
- Ubuntu 中 Boost SSL 的编译失败
- QNetworkAccessManager ssl 握手失败
- 由于SSL3_GET_CLIENT_CERTIFICATE:未返回证书,验证 SSL 客户端真实性失败
- Boost SSL-Server失败,产生SSLv3-error