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