4

我有一个 Qt 应用程序,它成功地在 OSX 10.7 上向我们的网站发出 HTTPS 请求,但在 10.5.8 上失败,并出现 QSslError::errorString“根 CA 证书不被信任用于此目的”。

我正在设置根证书:

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);

如果我设置了一些其他证书,我会在 OSX 10.5.8 和 10.7 上收到两个错误字符串“找不到本地查找证书的颁发者证书”和“根 CA 证书不为此目的受信任”。这是我所期望的。

是什么让 Qt 仅在 10.5.8 上不信任 Equifax 证书?

编辑:可能的线索(或红鲱鱼):查看各自的 WireShark 跟踪,10.5.8 客户端在其客户端问候握手中不包括服务器名称指示或会话票证 TLS 扩展。

编辑 2:在 10.5.8 上构建为 32 位的作品。此外,在 10.7 上构建为通用(32 位和 64 位 Intel)并在 10.5.8 上运行,链接到基于 10.5.8 构建的 32 位 Qt 库。

编辑 3:我在https://github.com/cdemel/SO_examples/tree/master/soqtssl放置了一个示例,使用不同的网站(Twitter)和根证书,行为相同。

4

1 回答 1

0

好吧,这已经很久没有答案了,所以我将给出我不知情的解决方案作为答案:

将应用程序链接到基于 10.5.8 构建的 Qt 库。这对我有用,但我不能告诉你为什么。

于 2013-05-02T22:17:04.910 回答