1、概述
OpenSSL是一個開放源代碼的軟件庫包,它實現了 SSL(Secure SocketLayer)和 TLS(Transport Layer Security)協議,所以應用程序可以使用這個包來進行安全通信,避免竊聽,同時確認另一端連接者的身份。這個包廣泛被應用在互聯網的網頁服務器上。
SSL是啥?大家知道我們訪問網站的時候,以HTTPS開頭的表示你和服務器之間傳輸的數據經過了加密,這里所使用的加密協議就是SSL(Secure Sockets Layer,后來又推出了它的后續版本,改名叫TLS)。也就是說,把HTTP協議經過一層SSL協議進行加密包裝,就變成了HTTPS。當然,SSL/TLS還用在很多協議中,例如VPN、加密的電子郵件協議等。
在SSL協議中,我們使用了很多密碼學手段來保護數據,其中包括對稱密碼、公鑰密碼、數字簽名、證書、完整性校驗、偽隨機數生成等。由于這些算法和操作都非常復雜,于是開源社區就開發了一套庫,這個庫里面提供了很多現成的標準方法,其他開發者只要用正確調用這些方法,就可以實現SSL協議中的各種加密/解密操作了。這個庫就是開源的OpenSSL庫。
如何使用openssl?
一般情況下,直接到 Win32 OpenSSL 上下載已經編譯好的 OpenSSL 庫使用即可。但在某些情況下,可能需要適當的修改或者裁剪 OpenSSL,那么編譯它就成為了一個關鍵問題。
2、準備工作(win64為例)
1、下載并安裝 Visual Studio(以 VS 2013 為例)。
2、下載并安裝 ActivePerl,下載地址:http://www.activestate.com/activeperl/downloads ,我下載的版本是5.24.3.2404
安裝過程一律選默認即可。
ActivePerl一個perl腳本解釋器。其包含了包括有 Perl for Win32、Perl for ISAPI、PerlScript、Perl Package Manager四套開發工具程序,可以讓用戶編寫出適用于unix,windows,linux系統的CGI程序來。
安裝的只是perl的一個解釋程序啦,外觀上也不會發生什么變化,你在windows的cmd界面里輸入perl -v可查看你所安裝的版本。顯示如下圖:
3、下載并安裝 Nasm 匯編器,下載地址:http://www.nasm.us/ ,我下載的是nasm-2.14-installer-x64.exe
這里安裝完成后,將安裝目錄 C:\Program Files\NASM(以你的安裝目錄為準) 添加到系統環境變量 Path 中。
配置環境變量:
右鍵計算機選擇屬性,選擇高級系統設置,選擇高級選項,再選擇右下方環境變量選項,給系統變量選擇新建,變量名隨便起不沖突即可(如NASM),變量值填寫安裝目錄(如 C:\Program Files\NASM)
??? 注:若桌面沒有計算機選項的可通過控制面板 — 系統和安全 — 系統到該目錄。或開始 — 計算機 — 右鍵 — 選擇屬性。
4、下載并安裝 OpenSSL,下載地址:https://www.openssl.org/source/ ,我下載的版本是 openssl-1.0.2p.tar.gz
下載完成后,將 OpenSSL 包解壓至 C:\openssl-1.0.2p,便可以進行編譯了。
注意: 解壓后的目錄中有兩個文件 - INSTALL.W32、INSTALL.W64,包含了 OpenSSL 的各個編譯步驟。
注意:當前最新版本為openssl-1.1.1.tar.gz,解壓后的目錄中并沒有INSTALL.W32、INSTALL.W64兩個文件,該版本安裝方法具體可參考README和INSTALL兩個文件。
3、編譯OpenSSL
3.1、配置編譯環境
我們用VS2013來作為編譯工具,使用VS2013對應的命令行進入,操作步驟如下:
開始 — 所有程序 — Visual Studio 2013 — Visual Studio Tools — 選擇一個命令提示工具
進入命令提示符,然后定位至OpenSSL的安裝目錄,如 C:\openssl-1.0.2m
注意:這里不建議使用cmd命令行,使用cmd命令行在執行nmake -f ms\nt.mak編譯時,會提示’nmake’ 不是內部或外部命令,也不是可運行的程序。(需要配置環境變量啥的,沒有試,這里直接使用VS 2013命令行)
3.2、配置編譯文件和模式
輸入如下命令:
perl Configure VC-WIN64A no-asm --prefix=F:\openssl
??? 1
參數說明:
VC-WIN64A表示Windows 64位系統,32位系統請換成VC-WIN32,若要使用debug版本,請使用debug-VC-WIN64A或debug-VC-WIN32
no-asm 表示不用匯編,不設置此屬性,可能會導致編譯不過(建議使用)
–prefix=F:\openssl將其安裝到F盤的openssl文件夾下,省略會安裝在默認路徑下
顯示如下圖:
3.3、生成編譯配置文件
若為Windows 64位系統,執行
ms\do_win64a.bat
??? 1
若為Windows 32位系統,執行
ms\do_ms.bat
??? 1
執行這一步之后,在ms目錄下會生成nt.mak和ntdll.mak兩個編譯配置文件
nt.mak 用于生成靜態lib庫
ntdll.mak 用于生成動態dll庫
3.4、編譯
靜態庫
nmake -f ms\nt.mak?? ?
??? 1
動態庫
nmake -f ms\ntdll.mak
??? 1
注:這里也可以直接執行如下命令,將靜態庫或動態庫直接安裝到指定目錄(或默認目錄):
//靜態庫
nmake -f ms\nt.mak install
//或
//動態庫
nmake -f ms\ntdll.mak install
??? 1
??? 2
??? 3
??? 4
??? 5
3.5、測試
測試靜態庫:
?nmake -f ms\nt.mak test
??? 1
測試動態庫:
?nmake -f ms\ntdll.mak test
??? 1
若最終顯示 passed all tests 則說明生成的庫正確:
3.6、安裝
安裝靜態庫:
nmake -f ms\nt.mak install
??? 1
安裝動態庫:
nmake -f ms\ntdll.mak install
??? 1
編譯、安裝完成后,即可在 F:\openssl目錄下看到生成的相關文件和文件夾,如下圖:
注:F:\openssl目錄為執行 perl Configure VC-WIN64A no-asm --prefix=F:\openssl 時指定的目錄,若沒有通過–prefix=指定目錄,會安裝到一個默認目錄(命令行內會有提示),如下圖顯示默認安裝到了 C:\usr\local\ 目錄
3.7、其他
清除上次靜態庫的編譯,以便重新編譯:
nmake -f ms\nt.mak clean
??? 1
清除上次動態庫的編譯,以便重新編譯:
nmake -f ms\ntdll.mak clean
————————————————
版權聲明:本文為CSDN博主「mayue_csdn」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/mayue_web/article/details/83997969