QT5.9.7 vs2017 msvc2017_64
我的背景:
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代理的情况下获得正确的回复呢?
谢谢!
发布于 2019-02-17 10:24:50
您应该连接到错误和sslErrors信号,看看出了什么问题。
您已经从Burb中选择了Use a self-signed certificate。当使用自签名证书时,通常会得到SSL Common Name Mismatch Error,在测试时可以忽略它。
在Qt上,您可以使用与自签名证书相关的忽略QNetworkReply中的SSL错误,如下所示(来自文档):
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.当您切换到生产中的最终证书时,您必须记住删除“忽略”代码,以免在软件中留下安全漏洞。
https://stackoverflow.com/questions/54712747
复制相似问题