配置QSslConfiguration讓客戶端程序跳過本地SSL驗證


大家下午好哦。今天我們在重新制作我們萌夢聊天室的時候,出現了這樣的問題。那就是我們的客戶端能夠對qtdream.com服務器進行登錄,但是不能對localhost服務器(也就是本機啦)進行登錄。這究竟是什么原因呢?
原圖來自http://www.pixiv.net/member_illust.php?mode=medium&illust_id=60269167
因為這個問題是在我們引入了https的時候出現的,所以我們把原因定位到為什么會導致https出現問題。后面我看到了QNetworkRequest這個類,看到了里面有這樣一個函數::strawberry:

QNetworkRequest::setSslConfiguration(const QSslConfiguration &configuration); 

這個函數呢,可以設置SSL的配置,包括OpenSSL以及其它的SSL,都是這樣的配置。然后我又看QSslConfiguration這個類:,並且看到了這樣的函數:

QSslSocket::setPeerVerifyMode(QSslSocket::PeerVerifyMode mode);

我在仔細研讀文檔后,發現其中的端倪。原來默認設置是對服務器的安全證書進行驗證的。我們本地的網站由於證書有問題,從而無法導入證書,這個時候呢,無法通過驗證。這個時候,默認的驗證模式無法通過,從而服務端無法獲得到客戶端傳入的數據,因此我們需要進行這樣的操作:

    // 設置SSL配置 QSslConfiguration sslConf; sslConf.setPeerVerifyMode( QSslSocket::VerifyNone ); r.setSslConfiguration( sslConf ); 

這樣操作的話,我們就可以不再檢測SSL了。這樣我們就可以順利地通過我們的客戶端連接到我們的服務器了。怎樣?很簡單吧。

https://qtdream.com/topic/818/%E9%85%8D%E7%BD%AEqsslconfiguration%E8%AE%A9%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%A8%8B%E5%BA%8F%E8%B7%B3%E8%BF%87%E6%9C%AC%E5%9C%B0ssl%E9%AA%8C%E8%AF%81


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM