macos - OSX 10.5.8 上的 Qt : "The root CA certificate is not trusted for this purpose"

标签 macos qt ssl ssl-certificate

我有一个 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 上收到两个错误字符串“找不到本地查找证书的颁发者证书”和“为此目的不信任根 CA 证书”和 10.7。这是我所期望的。

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

编辑:可能的线索(或转移注意力):查看相应的 WireShark 跟踪,10.5.8 客户端在其客户端问候握手中不包含服务器名称指示或 session 票证 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) 和根证书,具有相同的行为。

最佳答案

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

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

关于macos - OSX 10.5.8 上的 Qt : "The root CA certificate is not trusted for this purpose",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13093025/

相关文章:

java - 为什么这个Java小程序会让MacOS重启?

regex - 在 Mac OS X 上使用命令 find 扩展 POSIX 实用程序?

swift - 将远程帧缓冲区流式传输到 NSView

ssl - SSL session 缓存和过期如何工作

ssl - RestTemplate 证书问题

spring - 在 Spring 中以编程方式访问启用 SSL 的 Tomcat 上的 Web 应用程序 API

eclipse - eclipse .classpath 可以支持不同环境的多个 JRE 吗?

database - QSqlQuery::exec: 数据库未打开

c++ - 使用 Qt 隐藏元素

c++ - 在成员函数中调用成员结构