chi*_*uba 5 c++ ssl qt qnetworkaccessmanager
我正在尝试向证书自签名的Web服务发送休息请求.目前我正在创建请求,设置网址和身份验证.键作为标题.然后我告诉回复忽略这个ssl错误:
QSslError error(QSslError::SelfSignedCertificate);
QList<QSslError> expectedSslErrors;
expectedSslErrors.append(error);
QNetworkReply *reply = _accessManager.put(request, ""); // no requestbody
reply->ignoreSslErrors(expectedSslErrors);
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到以下ssl错误:
9 - 证书是自签名的,不受信任
然后是网络错误nr 6:
请求失败并显示消息:SSL握手失败
目前我忽略了所有错误,因为它似乎是唯一可行的.感觉很脏.
如果有人知道我做错了什么,真的很感激!
编辑:
变成:
QList<QSslError> expectedSslErrors;
expectedSslErrors.append(QSslError::SelfSignedCertificate);
expectedSslErrors.append(QSslError::CertificateUntrusted);
reply->ignoreSslErrors(expectedSslErrors);
Run Code Online (Sandbox Code Playgroud)
但仍然得到同样的错误......
证书是自签名的,不受信任
问题是“不受信任”的部分。您必须提供自签名证书,作为QSslError
.
编辑:根据源代码,实际收到的 SSL 错误与传递给的错误之间的比较ignoreSslErrors
是通过比较错误代码和证书来完成的。
因此,如果 OpenSSL 返回的错误包含证书,例如 with QSslError::SelfSignedCertificate
,则必须始终将证书传递给QSslError
构造函数,否则比较将失败。
但是您也可以通过将信号连接sslError()
到一个插槽来手动忽略错误,在该插槽中您检查错误列表是否仅包含自签名证书错误,然后调用ignoreSslErrors()
(不带任何参数)。
归档时间: |
|
查看次数: |
3724 次 |
最近记录: |