第一:下載項目中對應版本的openssl的庫
https://openssl-library.org/source/old/1.0.2/ 老版本的openssl的下載地址,這個下載的好像是源碼,還要編譯。
https://indy.fulgan.com/SSL/
在這里下載不需要編譯,下載下來直接用dll文件。
第二:下載完庫,配置庫
Qt本身不包含OpenSSL庫,因此在使用需要SSL/TLS的功能時(如HTTPS請求),必須手動配置OpenSSL。
OpenSSL是第三方庫:Windows系統本身不包含OpenSSL,它是一個獨立的安全套接層協議實現。
Qt的SSL支持依賴OpenSSL:Qt的網絡模塊(QNetworkAccessManager)使用OpenSSL實現HTTPS等安全協議。
鏈接庫路徑和名稱
#LIBS += -L"C:/Users/Lenovo/Documents/build-HttpManager-Desktop_Qt_5_9_6_MinGW_32bit-Debug/debug" -lcrypto-1_1 -lssl-1_1
LIBS += -L"C:/Users/Lenovo/Documents/build-HttpManager-Desktop_Qt_5_9_6_MinGW_32bit-Release/release" -lcrypto-3 -lssl-3 -leay32 -lssleay32
上述別看鏈接了那么多庫,其實也就-leay32 -lssleay32有用,這兩個是我的qt工程中對應版本的openssl庫。 -lcrypto-3 -lssl-3在我的工程中版本不對應。
下面注掉了,開始想不下載openssl運行qt的https的示例程序,發現運行后 不能和服務端建立通訊。
#DEFINES += QT_USE_QSCHANNEL
第三:運行程序中驗證,如果配置正確會輸出是否支持SSL: true。看打印輸出我下載 配置的版本是1.0.2r。
// 添加 SSL 支持檢查
qDebug() << "Qt編譯時SSL版本:" << QSslSocket::sslLibraryBuildVersionString();
qDebug() << "當前運行時SSL版本:" << QSslSocket::sslLibraryVersionString();
qDebug() << "是否支持SSL:" << QSslSocket::supportsSsl();
//Qt編譯時SSL版本: “OpenSSL 1.0.2j 26 Sep 2016”
//當前運行時SSL版本: “OpenSSL 1.0.2r 26 Feb 2019”
//是否支持SSL: true