首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在QT5.9中设置SslConfiguration?

如何在QT5.9中设置SslConfiguration?
EN

Stack Overflow用户
提问于 2019-02-15 15:49:24
回答 1查看 269关注 0票数 0

QT5.9.7 vs2017 msvc2017_64

我的背景:

代码语言:javascript
复制
QSslConfiguration config;
config.setPeerVerifyMode(QSslSocket::VerifyNone);
config.setProtocol(QSsl::TlsV1SslV3);
httpRequest.setSslConfiguration(config);

httpRequest.setUrl(QUrl(strUrl));

QEventLoop eventLoop;
QObject::connect(&networkAccessManager, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
QNetworkReply *reply = networkAccessManager.post(httpRequest, data);
eventLoop.exec();
QByteArray tmpQBA = reply->readAll();
QString tmpQStr = QVariant(tmpQBA).toString();

这得到了糟糕的答复:

当使用burpsuite http代理时,请获得正确的回复:

右应答

那么,如何在没有burpsuite代理的情况下获得正确的回复呢?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-02-17 10:24:50

您应该连接到错误sslErrors信号,看看出了什么问题。

您已经从Burb中选择了Use a self-signed certificate。当使用自签名证书时,通常会得到SSL Common Name Mismatch Error,在测试时可以忽略它。

在Qt上,您可以使用与自签名证书相关的忽略QNetworkReply中的SSL错误,如下所示(来自文档):

代码语言:javascript
复制
QList<QSslCertificate> cert = QSslCertificate::fromPath(QLatin1String("server-certificate.pem"));
QSslError error(QSslError::SelfSignedCertificate, cert.at(0));
QList<QSslError> expectedSslErrors;
expectedSslErrors.append(error);

QNetworkReply *reply = manager.get(QNetworkRequest(QUrl("https://server.tld/index.html")));
reply->ignoreSslErrors(expectedSslErrors);
// here connect signals etc.

当您切换到生产中的最终证书时,您必须记住删除“忽略”代码,以免在软件中留下安全漏洞。

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

https://stackoverflow.com/questions/54712747

复制
相关文章

相似问题

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