OSX 10.7で当社のWebサイトにHTTPS要求を行うことに成功したが、10.5.8でQSslError::errorString「ルートCA証明書はこの目的では信頼されていません」で失敗するQtアプリケーションがあります。
ルート証明書を次のように設定しています:
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証明書はこの目的で信頼されていません」という2つのエラー文字列が表示されます。これは私が期待することです。
Qtが10.5.8でのみEquifax証明書を信頼しない理由は何ですか?
編集:考えられる手がかり(または赤いニシン):それぞれのWireSharkトレースを見ると、10.5.8クライアントは、クライアントhelloハンドシェイクにサーバー名表示またはセッションチケットTLS拡張機能を含めていません。
編集2:10.5.8で32ビットとしてビルドすることは機能します。また、10.7でユニバーサル(32ビットおよび64ビットIntel)としてビルドし、10.5.8で実行し、10.5.8でビルドされた32ビットQtライブラリに対してリンクします。
編集3:同じ動作で別のWebサイト(Twitter)とルート証明書を使用して、https://github.com/cdemel/SO_examples/tree/master/soqtsslに例を配置しました。