簡述 OpenSSL是一個開源的第三方庫,它實現了SSL(Secure SocketLayer)和TLS(Transport Layer Security)協議,被廣泛企業應用所採用。對於一般的開發人員而言,在Win32 OpenSSL上下載已經編譯好的OpenSSL庫是省力省事的好辦法。對於高級的 ...
簡述
OpenSSL是一個開源的第三方庫,它實現了SSL(Secure SocketLayer)和TLS(Transport Layer Security)協議,被廣泛企業應用所採用。對於一般的開發人員而言,在Win32 OpenSSL上下載已經編譯好的OpenSSL庫是省力省事的好辦法。對於高級的開發用戶,可能需要適當的修改或者裁剪OpenSSL,那麼編譯它就成為了一個關鍵問題。下麵主要講述如何在Windows上編譯OpenSSL庫。
步驟
-
在微軟網站下載並安裝Visual Studio(編譯需要VC庫支持),我用的是2017版。
-
下載並安裝ActivePerl。
下載地址:http://www.activestate.com/activeperl/downloads
我下載的是:5.24.1.2402 Windows Installer(EXE)打開命令提示符,將其定位到
C:\Perl64\eg
目錄下,執行perl example.pl
,若提示:Hello from ActivePerl!
則說明Perl安裝成功,可以開始使用Perl的相關命令來進行OpenSSL的安裝了。 -
下載並安裝Nasm彙編器,並將
D:\Program Files\NASM
添加到系統環境變數Path中。(註:這一步是因為對於下麵要安裝的openssl-1.0.2版本,用masm彙編器彙編會出錯,因此使用nasm) 下載地址:http://www.nasm.us/pub/nasm/releasebuilds/。我下載的是:nasm-2.14rc0-installer-x64.exe。 -
下載並安裝OpenSSL。 下載地址:https://www.openssl.org/source/。 我下載的是:openssl-1.0.2l.tar.gz (SHA256) (PGP sign) (SHA1)
在完成所有上述步驟,我們就可以解壓縮OpenSSL包(解壓至:D:\openssl-1.0.2l
),在對它進行修改便可以編譯了。解壓後的目錄中有兩個文件INSTALL.W32、INSTALL.W64需要被關註。打開其中任何一個文件,你會看到如何編譯OpenSSL的各個步驟。
-
將命令提示符定位到D
:\openssl-1.0.2l
。 -
輸入
perl Configure VC-WIN32 --prefix=D:\OpenSSL
(將其安裝到D:\OpenSSL)。 -
輸入ms\do_nasm
-
輸入
nmake -f ms\ntdll.mak
,執行完後會在openssl-1.0.2l
目錄下生成一個out32dll的文件夾,裡面包含了一些靜態庫、動態庫和.exe文件。 -
輸入
nmake -f ms\ntdll.mak test
,若最終顯示passed all tests
說明生成的庫正確。 -
輸入
nmake -f ms\ntdll.mak install
,則會在D:\OpenSSL
目錄下生成bin、include、lib、ssl四個文件夾。
註意:
-
以上編譯的是release庫,若編譯debug庫,則將以上第2步中的
VC-WIN32
改成debug-VC-WIN32
即可。另外一定要註意VC-WIN32大小寫不能錯。 -
若編譯靜態庫,則用
ms\nt.mak
替換掉上面用到的ms\ntdll.mak
即可。 -
若生成不帶彙編支持的庫,則需將以上第2、3步用
perl Configure VC-WIN32 no-asm --prefix=D:\OpenSSL
和ms\do_ms
替換即可。 -
在D
:\openssl-1.0.2l\tmp32dll
文件夾下包含相應的彙編文件。 -
第4步編譯過程中很可能出現各種未定義或鏈接失敗錯誤,為了找到需要的文件,需要修改path環境變數,新增lib和include環境變數。 我的改動如下,各位可以根據自己機器環境參照著更改: path新增 D:\visualstudio2017\Common7\IDE;
lib內容為 D:\visualstudio2017\VC\Tools\MSVC\14.10.25017\lib\x86;
D:\visualstudio2017\VC\Tools\MSVC\14.10.25017\bin\HostX86\x86;
D:\visualstudio2017\VC\Tools\MSVC\14.10.25017\bin\HostX86\x64;
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin;
C:\Program Files\NASM; include內容為 C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\ucrt;
C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um;
C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\shared;
D:\visualstudio2017\VC\Tools\MSVC\14.10.25017\include
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.14393.0\ucrt\x86 -
出現其它奇怪的問題時,建議多搜索。由於這個庫十分常用,網上有不少類似問題,我安裝時遇到了很多坑,上文中沒有一一列出,藉助了很多網路上的力量。