我有一个QT应用程序,该应用程序成功地在OSX 10.7上向我们的网站提出了HTTPS请求,但使用QSSLERROR :: ERRORORSTRING在10.5.8上失败了"为此目的"。
我正在用以下方式设置根证书。
QFile certFile1(":/Equifax_Secure_Certificate_Authority.pem.txt");
QSslCertificate cert1(&certFile1, QSsl::Pem);
certList.append(cert1);
QSslConfiguration sslConfig(request.sslConfiguration());
sslConfig.setCaCertificates(certList);
request.setSslConfiguration(sslConfig);
如果我设置了其他一些证书,我将获得两个错误字符串:"找不到本地查找的证书的发行证书"one_answers" root ca证书是为此目的不信任的",这两个OSX 10.5.58和10.7。这就是我期望的。
是什么使QT仅在10.5.8上仅信任Equifax证书?
编辑:可能的线索(或红鲱鱼):查看各自的Wireshark痕迹,10.5.8客户端不包括服务器名称指示或会话票证TLS TLS Extensions在其客户端Hello Handshake中。
编辑2:在10.5.8上以32位构建。另外,在10.7上以通用(32位和64位Intel)建造,并在10.5.8上运行,链接在32位QT库中,以10.5.8的作品构建。
编辑3:我在https://github.com/cdemel/so_examples/tree/master/soqtsssl上使用了不同的网站(Twitter)和root Cert,并具有相同的行为。
好吧,这已经没有得到太长时间的答复,所以我将给我的无信息解决方案作为答案:
具有在10.5.8建立的QT库的应用链接。这对我有用,但我无法告诉你为什么。