gpt4 book ai didi

c++ - BB10 QNX Momentics IDE 中的 SSL 握手失败

转载 作者:可可西里 更新时间:2023-11-01 15:26:51 29 4
gpt4 key购买 nike

我正在尝试连接到使用 SSL 的 Web 服务。我正在使用 QNX IDE Momentics 在 C++ 中使用 Blackberry 10。我尝试做的连接如下:

网址:“https://movilapi....”

代码:

networkAccessManager = new QNetworkAccessManager(this);
bool res = connect(networkAccessManager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(requestFinished(QNetworkReply*)));

Q_ASSERT(res);
Q_UNUSED(res);

QNetworkRequest request = QNetworkRequest(QUrl(url));
request.setRawHeader("User-Agent", "bb-phone/20120910");
request.setRawHeader("Content-Type", "application/json");
request.setRawHeader("Content-Length", postDataSize);

QSslConfiguration sslConfig = request.sslConfiguration();
sslConfig.setPeerVerifyMode(QSslSocket::VerifyNone);
sslConfig.setProtocol(QSsl::TlsV1);
request.setSslConfiguration(sslConfig);

networkAccessManager->post(request, outData);

无论我尝试使用哪种服务,我总是遇到同样的错误。响应是:SSL 握手失败

Wireshark 信息:

Protocol Length Info
SSLv2 157 Client Hello
TLSv1 1202 Server Hello, Certificate, Server Hello Done
TLSv1 449 Client Key Exchange
TLSv1 60 Change Cipher Spec
TLSv1 91 Encrypted Handshake Message
TLSv1 97 Change Cipher Spec, Encrypted Handshake Message
TLSv1 605 Application Data
TLSv1 280 Application Data
TLSv1 277 Application Data
TLSv1 121 Application Data
TLSv1 92 Application Data
TLSv1 297 Application Data, Application Data, Application Data, Application Data
TLSv1 77 Encrypted Alert

加密警报内容类型为 21

服务器密码套件在客户端支持的密码套件列表中。

我正在使用以下库建立连接:QtNetwork/qnetworkreply.h

我希望这个新信息能提高问题的质量。

请帮忙,我已经搜索了几个小时都没有成功。

最佳答案

在与一些 RIM 个人就此特定问题取得联系后,我们发现 TLS/SSL 服务器不能容忍某些扩展,因此使用以下 Qt 代码禁用扩展传输,连接已通过 https 成功建立:

QSslConfiguration cfg(request.sslConfiguration());
cfg.setSslOption(QSsl::SslOptionDisableSessionTickets, true);
request.setSslConfiguration(cfg);

我想特别提到 Research In Motion 的应用开发部门,感谢他们在这个问题上的关注和努力,直到我们最终找到正确的方法。

以下是完整的连接代码,以防有人遇到这种需要:

networkAccessManager = new QNetworkAccessManager(this);
bool res = connect(networkAccessManager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(requestFinished(QNetworkReply*)));
QNetworkRequest request = QNetworkRequest(QUrl(url));
request.setRawHeader("User-Agent", "BB_PHONE/20120926");
request.setRawHeader("Content-Type", "application/json");
request.setRawHeader("Content-Length", postDataSize);

QSslConfiguration sslConfig = request.sslConfiguration();
sslConfig.setPeerVerifyMode(QSslSocket::VerifyNone);
sslConfig.setPeerVerifyDepth(1);
sslConfig.setProtocol(QSsl::TlsV1);
sslConfig.setSslOption(QSsl::SslOptionDisableSessionTickets, true);

request.setSslConfiguration(sslConfig);
networkAccessManager->post(request, outData);

关于c++ - BB10 QNX Momentics IDE 中的 SSL 握手失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13613801/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com