我有一个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不信任Equifax证书只在10.5.8?
编辑:可能的线索(或红色鲱鱼):查看相应的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)和根证书,具有相同的行为。
答案 0 :(得分:0)
嗯,这已经很长时间没有答案了,所以我打算把我不知情的解决方案作为答案:
将应用程序链接到基于10.5.8构建的Qt库。这对我有用,但我不能告诉你为什么。