我遇到問題。我製作了一個連接到https站點的Qt應用程序。 在我的工作機器上,一切正常。當我嘗試測試我一個乾淨的Windows 7機器上的應用程序,我發現了以下問題:Qt&SSL,握手失敗
我已經安裝了新鮮的Win7機(安裝所有更新)後,開始我的應用程序後,我收到了SSL握手失敗錯誤,SIGNAL(sslErrors(QNetworkReply *,QList))與兩個空錯誤字符串一起發出並且錯誤= QSslError :: NoError。 我真的在搜尋整天爲什麼發生這種情況,也可以用examples \ network \ securesocketclient \ release \ securesocketclient和domain「google.com」重現它。
現在,我發現,一旦我啓動了訪問https://www.google.com的Internet Explorer,我的應用程序也按預期工作,並且不會再出現握手錯誤。
順便說一句,您訪問哪個網站並不重要 - 這與google.com無關。
有人可以向我解釋爲什麼會發生這種情況嗎?這是OpenSSL或Qt中的一個錯誤嗎?
UPDATE
我找到了一種生活在這個問題我自己,實現以下忽略邏輯:
QSslError ignoreNOErrors(QSslError::NoError);
foreach(QSslError error, errors)
if(error.error() != QSslError::NoError)
qDebug() << error.errorString();
QList<QSslError> expectedSslErrors;
expectedSslErrors.append(ignoreNOErrors);
reply->ignoreSslErrors(expectedSslErrors);
感謝
好吧,似乎沒有人有一個好主意。如何使用http://qt-project.org/doc/qt將GeoTrust(https://www.geotrust.com/resources/root-certificates/)中的根證書添加到套接字的CA證書數據庫中-4.8/qsslsocket.html#addCaCertificate?至少,這聽起來像是一個合理的解決方法。任何想法? – inspector