QT支援https及編譯OpenSSL
文章目錄
搞懂Qt OpenSSL的具體原因
Qt下的https 請求不通的一個重要原因就是缺少OpenSSL的庫,很多網上的內容都直接告訴大家把這兩個庫(libeay32、ssleay32)複製到工程下面這是不負責的回答,一個很重要的原因就是不同版本所需要的OpenSSL的庫的大版本並不相同
- Qt自從5.12.4版本所使用的OpenSSL庫的版本是1.1.x,而在這之下的Qt使用的版本是1.0.2系列
- 最大的區別是什麼?就是OpenSSL從1.0.2升級成了1.1.x之後,整個動態庫的名字都發生了改變,經典的libeay32.dll和ssleay32.dll搖身一變改名libcrypto-1_1.dll 和libssl-1_1.dll。
- 其次就算是Qt 5.12.4以下支援的1.0.2系列庫也並不相同,因為1.0.2包含從a~u這麼多版本,如果你帶入錯誤的1.0.2庫,輕則導致https請求不同,重則程式直接崩潰(親身經歷)
提示:如何找到適合自己的OpenSSL庫並編譯
一、如何找到和自己Qt版本真正合適的庫並編譯
在Qt中通過qDebug()直接輸出
qDebug()<<QSslSocket::sslLibraryBuildVersionString();
//輸出對應的OpenSSl庫
//OpenSSL 1.0.2o 27 Mar 2018
二、編譯自己真正所需的OpenSSL庫
1.下載OpenSSL(以我所需要的1.0.2o為例)
OpenSSL 原始碼歷史版本下載地址
如下所示
下載完成之後我們解壓到當前資料夾即可
2.配置編譯環境及工具ActivePerl
2.1 由於OpenSSLwindows下需要用ActivePerl進行編譯,我們首先下載,
ActivePerl 下載直通車
下載後預設安裝完畢就好
2.2 配置Perl環境變數
最新版預設是新增好的環境變數的
開啟終端,然後直接輸入命令
Perl -help
輸出如下所示就是配置完畢了
3.編譯OpenSSL庫
3.1啟動VS2017的命令列終端
- 不同位數的庫要採用不同的命令列工具
- 一定要以管理員身份執行
3.2切換到要編譯的OpenSSL 目錄
具體過程 ,如下所示
3.3 配置要Perl編譯的位數
perl Configure VC-WIN64A no-asm --perfix="E:\\ThirdDLL\\OpenSS_LBuild64"
這裡VC-WIN64A
代表目標是64位庫,VC-WIN32
代表是32位庫,no-asm
編譯過程中不使用匯編程式碼加快編譯過程。
3.4 執行編譯
-
輸入
ms\do_win64a
-
輸入
nmake -f ms\ntdll.mak
(ntdll 代表動態庫,nt 代表靜態庫)
執行完畢如下所示 -
輸入
nmake -f ms\ntdll.mak install
-
輸入
nmake -f ms\ntdll.mak test
進行測試
最終結果
-
編譯命令彙總
perl Configure VC-WIN64A no-asm --perfix="E:\\ThirdDLL\\OpenSSL_Build64"
ms\do_win64a
nmake -f ms\ntdll.mak
nmake -f ms\ntdll.mak install
nmake -f ms\ntdll.mak test
總結
以上截圖及操作均有本人實際操作完成
相關文章
- openssl原始碼編譯及配置方法原始碼編譯
- ijkplayer 的編譯、打包 framework 和 https 支援編譯FrameworkHTTP
- openssl-3.0.0-alpha9編譯編譯
- Qt開發筆記:OpenSSL庫介紹、windows上mingw32版本的OpenSSL編譯模組化QT筆記Windows編譯
- OpenSSL 編譯(vs2015+win10)編譯Win10
- Qt編譯MySQL驅動QT編譯MySql
- QT中文編譯出錯QT編譯
- https--OpenSSL生成root CA及簽發證書HTTP
- 使用openSSL構造一個支援https的nodejs伺服器HTTPNodeJS伺服器
- Linux系統下編譯Openssl 步驟:Linux編譯
- Andorid Studio NDK 開發 – 編譯 OpenSSL 類庫編譯
- Qt 編譯qt-material-widgets皮膚的方法QT編譯
- .NetCore+OpenSSL實現HttpsNetCoreHTTP
- Centos編譯Python3.10解決openssl異常CentOS編譯Python
- win10 64位系統下openssl編譯Win10編譯
- Qt 獲取程式編譯時間QT編譯
- PHP編譯器BPC 6.0釋出,支援namespace,支援closure,成功編譯 workermanPHP編譯namespace
- qt 5.12測試openssl報錯QT
- Windows系統編譯libhv帶SSL,開啟WITH_OPENSSLWindows編譯
- 3568F-Qt工程編譯說明QT編譯
- CMake編譯Qt工程時的問題編譯QT
- 使用OpenSSL自建一個HTTPS服務HTTP
- 麒麟系統開發筆記(三):從Qt原始碼編譯安裝之編譯安裝Qt5.12筆記QT原始碼編譯
- 程式碼線上編譯器(上)- 編輯及編譯編譯
- Qt 中有兩種方式編譯MinGW和MSVCQT編譯
- FFmpeg開發筆記(十六)Linux交叉編譯Android的OpenSSL庫筆記Linux編譯Android
- 編譯安裝pcre2-10.39 zlib-1.3.1 openssl-3.0.13編譯
- Micronaut使用提前編譯支援Spring Boot編譯Spring Boot
- Ubuntu18.04編譯ZLMediakit支援webrtcUbuntu編譯Web
- Linux下快速靜態編譯Qt以及Qt動態/靜態版本共存Linux編譯QT
- 已經編譯好的opencv QT creator直接使用編譯OpenCVQT
- OpenSSL支援TLS1.3特性前瞻TLS
- wayne編譯支援k8s1.16+編譯K8S
- qt編譯報錯 無法執行“rc.exe”QT編譯
- Win10下Qt+OpenCV+Cmake編譯錯誤Win10QTOpenCV編譯
- APK編譯及安全防護APK編譯
- 09_QT系統移植之交叉編譯QT原始碼和觸控原始碼QT編譯原始碼
- Centos7.3 升級最新Openssl1.1.0e同時編譯安裝lnmp環境(使用最新openssl1.1.0e)CentOS編譯LNMP