
【軟件介紹】
openssl是一款相當(dāng)不錯(cuò)的安全套接字層密碼庫工具;里面包括了幾種非常安全的算法,包括了密碼的算法、密鑰、證書封裝的管理、對(duì)ssl的協(xié)議進(jìn)行支持,輕松的即可幫助用戶進(jìn)行實(shí)現(xiàn)各種網(wǎng)絡(luò)的安全通信加密,對(duì)強(qiáng)度進(jìn)行快速的增加,非常的適合使用在各種需要的網(wǎng)絡(luò)應(yīng)用程序里面
【軟件功能】
OpenSSL整個(gè)軟件包大概可以分成三個(gè)主要的功能部分:SSL協(xié)議庫、應(yīng)用程序以及密碼算法庫。OpenSSL的目錄結(jié)構(gòu)自然也是圍繞這三個(gè)功能部分進(jìn)行規(guī)劃的。BIO機(jī)制是OpenSSL提供的一種高層IO接口,該接口封裝了幾乎所有類型的IO接口,如內(nèi)存訪問、文件訪問以及Socket等。這使得代碼的重用性大幅度提高,OpenSSL提供API的復(fù)雜性也降低了很多。
OpenSSL對(duì)于隨機(jī)數(shù)的生成和管理也提供了一整套的解決方法和支持API函數(shù)。隨機(jī)數(shù)的好壞是決定一個(gè)密鑰是否安全的重要前提。
OpenSSL還提供了其它的一些輔助功能,如從口令生成密鑰的API,證書簽發(fā)和管理中的配置文件機(jī)制等等。如果你有足夠的耐心,將會(huì)在深入使用OpenSSL的過程慢慢發(fā)現(xiàn)很多這樣的小功能,讓你不斷有新的驚喜。

【軟件特色】
可以快速的對(duì)您需要的數(shù)據(jù)進(jìn)行加密也可將要進(jìn)行使用的信息加密的明碼快速的進(jìn)行轉(zhuǎn)換
輕松的即可實(shí)現(xiàn)數(shù)據(jù)的保密,讓您的數(shù)據(jù)更加的安全
也可對(duì)數(shù)據(jù)的完整性進(jìn)行支持
包括了加密和數(shù)據(jù)的一致性操作
而且數(shù)據(jù)這進(jìn)行傳輸?shù)倪^程中,是相當(dāng)?shù)陌踩?br />不會(huì)讓您的數(shù)據(jù)被進(jìn)行篡改
也支持對(duì)安全進(jìn)行快速的驗(yàn)證

【算法介紹】
密鑰證書管理密鑰和證書管理是PKI的一個(gè)重要組成部分,OpenSSL為之提供了豐富的功能,支持多種標(biāo)準(zhǔn)。
首先,OpenSSL實(shí)現(xiàn)了ASN.1的證書和密鑰相關(guān)標(biāo)準(zhǔn),提供了對(duì)證書、公鑰、私鑰、證書請(qǐng)求以及CRL等數(shù)據(jù)對(duì)象的DER、PEM和BASE64的編解碼功能。OpenSSL提供了產(chǎn)生各種公開密鑰對(duì)和對(duì)稱密鑰的方法、函數(shù)和應(yīng)用程序,同時(shí)提供了對(duì)公鑰和私鑰的DER編解碼功能。并實(shí)現(xiàn)了私鑰的PKCS#12和PKCS#8的編解碼功能。OpenSSL在標(biāo)準(zhǔn)中提供了對(duì)私鑰的加密保護(hù)功能,使得密鑰可以安全地進(jìn)行存儲(chǔ)和分發(fā)。
在此基礎(chǔ)上,OpenSSL實(shí)現(xiàn)了對(duì)證書的X.509標(biāo)準(zhǔn)編解碼、PKCS#12格式的編解碼以及PKCS#7的編解碼功能。并提供了一種文本數(shù)據(jù)庫,支持證書的管理功能,包括證書密鑰產(chǎn)生、請(qǐng)求產(chǎn)生、證書簽發(fā)、吊銷和驗(yàn)證等功能。
事實(shí)上,OpenSSL提供的CA應(yīng)用程序就是一個(gè)小型的證書管理中心(CA),實(shí)現(xiàn)了證書簽發(fā)的整個(gè)流程和證書管理的大部分機(jī)制。
SSL和TLS協(xié)議
OpenSSL實(shí)現(xiàn)了SSL協(xié)議的SSLv2和SSLv3,支持了其中絕大部分算法協(xié)議。OpenSSL也實(shí)現(xiàn)了TLSv1.0,TLS是SSLv3的標(biāo)準(zhǔn)化版,雖然區(qū)別不大,但畢竟有很多細(xì)節(jié)不盡相同。
雖然已經(jīng)有眾多的軟件實(shí)現(xiàn)了OpenSSL的功能,但是OpenSSL里面實(shí)現(xiàn)的SSL協(xié)議能夠讓我們對(duì)SSL協(xié)議有一個(gè)更加清楚的認(rèn)識(shí),因?yàn)橹辽俅嬖趦牲c(diǎn):一是OpenSSL實(shí)現(xiàn)的SSL協(xié)議是開放源代碼的,我們可以追究SSL協(xié)議實(shí)現(xiàn)的每一個(gè)細(xì)節(jié);二是OpenSSL實(shí)現(xiàn)的SSL協(xié)議是純粹的SSL協(xié)議,沒有跟其它協(xié)議(如HTTP)協(xié)議結(jié)合在一起,澄清了SSL協(xié)議的本來面目。
對(duì)稱加密
OpenSSL一共提供了8種對(duì)稱加密算法,其中7種是分組加密算法,僅有的一種流加密算法是RC4。這7種分組加密算法分別是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持電子密碼本模式(ECB)、加密分組鏈接模式(CBC)、加密反饋模式(CFB)和輸出反饋模式(OFB)四種常用的分組密碼加密模式。其中,AES使用的加密反饋模式(CFB)和輸出反饋模式(OFB)分組長度是128位,其它算法使用的則是64位。事實(shí)上,DES算法里面不僅僅是常用的DES算法,還支持三個(gè)密鑰和兩個(gè)密鑰3DES算法。
非對(duì)稱加密
OpenSSL一共實(shí)現(xiàn)了4種非對(duì)稱加密算法,包括DH算法、RSA算法、DSA算法和橢圓曲線算法(EC)。DH算法一般用于密鑰交換。RSA算法既可以用于密鑰交換,也可以用于數(shù)字簽名,當(dāng)然,如果你能夠忍受其緩慢的速度,那么也可以用于數(shù)據(jù)加密。DSA算法則一般只用于數(shù)字簽名。
信息摘要
OpenSSL實(shí)現(xiàn)了5種信息摘要算法,分別是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事實(shí)上包括了SHA和SHA1兩種信息摘要算法。此外,OpenSSL還實(shí)現(xiàn)了DSS標(biāo)準(zhǔn)中規(guī)定的兩種信息摘要算法DSS和DSS1。

【使用教程】
安裝與配置直接運(yùn)行安裝文件(例如:ActivePerl-5.16.3.1604-MSWin32-x86-298023.msi)即可完成安裝;安裝過程將自動(dòng)完成環(huán)境變量的配置(安裝完成之后,可以在系統(tǒng)環(huán)境變量里看到perl的bin目錄(例如: C:\Program Files\perl\site\bin;)已經(jīng)被加入進(jìn)來),無需再手工配置;
3)測試安裝是否成功:
進(jìn)入perl安裝目錄的eg文件夾,執(zhí)行“perl example.pl”若顯示“Hello from ActivePerl!”,則說明Perl安裝成功。如下圖所示:

perl安裝成功之后就可以開始使用Perl的相關(guān)命令來進(jìn)行OpenSSL的安裝了。
2、openssl可以自己下載源碼編譯也可以直接下載安裝包安裝完之后即可使用。
2.1使用源碼編譯openssl
1) 下載openssl源碼的路徑:
http://www.openssl.org/source/
2)配置VS2005的環(huán)境變量(因?yàn)楹竺婢幾gopenssl時(shí),將會(huì)用到vs2005自帶的nmake工具)。
執(zhí)行VS2005的bin目錄下(例如:C:\Program Files\Microsoft Visual Studio 8\VC\bin)的vcvars32.bat文件即可完成配置,如下圖所示:

3)配置openssl
(1)將下載后的openssl壓縮文件(例如:openssl-1.0.1g.tar.gz)解壓縮到某目錄下(例如:C:\Program Files\openssl-1.0.1g);
(2)通過命令窗口,進(jìn)入openssl的目錄C:\Program Files\openssl-1.0.1g中,執(zhí)行“perl Configure VC-WIN32”即可完成配置,如下圖所示:

(3)執(zhí)行do_masm
在openssl的目錄下執(zhí)行ms\do_masm,注意不能進(jìn)入到ms下面直接執(zhí)行do_masm,否則會(huì)提示找不到文件“util\makfiles.pl”之類的錯(cuò)誤。

(4)編譯openssl
在openssl目錄下(C:\Program Files\openssl-1.0.1g)執(zhí)行“nmake -f ms\ntdll.mak”,如下圖所示:

注意:如果出現(xiàn)“nmake不是內(nèi)部命令或外部命令,也不是可運(yùn)行程序”的問題,則說明VS2005安裝的有問題,VS2005自帶有nmake編輯工具,在安裝目錄的“VC\BIN”文件夾下(例如本機(jī)的位置為:C:\Program Files\Microsoft Visual Studio 8\VC\bin),需將此路徑加入到環(huán)境變量中即可,如果不加,則執(zhí)行nmake命令的時(shí)候,還需要在,命令nmake前加上它所在的目錄。
(5)測試openssl是否編譯成功
在openssl目錄下執(zhí)行命令“nmake -f ms\ntdll.mak test”即可完成測試,如下圖所示

測試結(jié)束的時(shí)候會(huì)顯示“passed all tests”字樣,例如:

(6)openssl編譯完成之后,會(huì)在其目錄下生成文件夾out32dll(例如:C:\Program Files\openssl-1.0.1g\out32dll),所生成的文件(例如openssl.exe還有其他動(dòng)態(tài)庫等)就在該文件夾里。
二、使用openssl生成ca及證書
使用剛才編譯openssl生成的openssl.exe等可執(zhí)行文件生成相應(yīng)證書,命令與linux下生成ca和簽名證書的過程是一樣的,詳細(xì)操作可參考文章《Mosquito使用SSL/TLS進(jìn)行安全通信時(shí)的使用方法》,該文地址為:
http://blog.csdn.net/houjixin/article/details/24305613
或者:
http://houjixin.blog.163.com/blog/static/35628410201432205042955/
下面將使用一個(gè)現(xiàn)成的ca文件(ca.key和ca.crt)生成證書文件(client.key和client.crt):
1)創(chuàng)建一個(gè)目錄用于存放ca文件以及將要生成的證書文件,本例中將該目錄創(chuàng)建在out32dll目錄下:C:\Program Files\openssl-1.0.1g\out32dll\test,
2)執(zhí)行命令生成證書的key文件:..\openssl genrsa -out client.key 2048,如下圖所示:

3) 生成證書請(qǐng)求文件:..\openssl req -out server.csr -key server.key -new

4) 生成證書文件:..\ openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 36500

其他方法
下載openssl-1.0.1g(其他版本也可以)并解壓
安裝Perl
(我的安裝目錄為C:\Perl64)
運(yùn)行”CMD“命令,使用cd命令將運(yùn)行目錄指向perl安裝目錄的eg文件夾, 執(zhí)行“perl example.pl”若顯示“Hello from ActivePerl!”,則說明Perl安裝成功,可以開始使用Perl的相關(guān)命令來進(jìn)行OpenSSL的安裝了。
(PS:如果你想看看原始的INSTALL文件,那么請(qǐng)打開OpenSSL的解壓縮目錄,下面有兩個(gè)文件INSTALL.W32和INSTALL.W64,用記事本方式打開,你可以看到詳細(xì)的關(guān)于安裝的解釋)
安裝openssl
(最關(guān)鍵的步驟來了)
1)首先設(shè)定好環(huán)境變量,這步參照網(wǎng)上的教程后發(fā)現(xiàn)后面的編譯步驟不成功,找了很就才發(fā)現(xiàn)是這部設(shè)置的不對(duì)才導(dǎo)致的。
設(shè)定環(huán)境變量:桌面計(jì)算機(jī)圖標(biāo)右鍵->屬性->高級(jí)系統(tǒng)設(shè)置->環(huán)境變量->在系統(tǒng)變量當(dāng)中找到變量名稱為path的變量(如果沒有找到這新建)點(diǎn)擊編輯->在變量名稱中填入"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin;C:\Perl64\bin;c:\windows\system32"->點(diǎn)擊確定完成設(shè)定。(說明:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin路徑是VS2010的路徑。C:\Perl64\bin是運(yùn)行perl的路徑,不若不設(shè)定那么perl命令將找不到。c:\windows\system32這個(gè)路徑很少提到但是很重要,如果不設(shè)置那么會(huì)造成后面vcvars32.bat環(huán)境變量執(zhí)行出錯(cuò)。)到此環(huán)境變量路徑設(shè)置好之后重啟下電腦才能生效。
2)使用Visual Studio命令提示(2010)進(jìn)入控制臺(tái)模式
開始菜單->所有程序->Microsoft Visual Studio 2010->Visual Studio Tools->Visual Studio命令提示(2010),(PS:以管理員身份運(yùn)行), 使用cd命令將目錄指向C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin(PS:自己的VC安裝路徑), 命令行鍵入vcvars32,運(yùn)行vcvars32.bat..完成后進(jìn)入OpenSSL源碼的目錄(C:\openssl)
3)執(zhí)行Configure命令(配置編譯參數(shù))(需將目錄跳到OpenSSL源碼目錄下)
在命令行中鍵入"perl configure VC-WIN32 --prefix=c:\openssl"(PS:--prefix=c:\openssl命令為指定安裝位置)
4)運(yùn)行ms\do_ms命令(需將目錄跳到OpenSSL源碼目錄下)
在命令行中鍵入”ms\do_ms“。
5)運(yùn)行“nmake -f ms\ntdll.mak”命令進(jìn)行代碼編譯(需將目錄跳到OpenSSL源碼目錄下)
編譯分兩種情況,生成靜態(tài)庫和動(dòng)態(tài)庫
(1) 如果是編譯OpenSSL動(dòng)態(tài)庫,則在命令行鍵入 nmake -f ms\ntdll.mak
編譯成功課在文件夾out32dll里面查看輸出的文件,包括應(yīng)用程序的exe文件、lib文件、dll文件。
(2) 如果是編譯OpenSSL靜態(tài)庫,則在命令行鍵入 nmake -f ms\nt.mak
編譯成功課在文件夾out32里面查看輸出的文件,包括應(yīng)用程序的exe文件、lib文件。
6)測試使用命令“nmake -f ms\ntdll.mak test”(若安裝成功則可以使用此命令來驗(yàn)證)
使用openssl
當(dāng)VS2010工程需要用到openssl庫時(shí),在包含目錄中胎添加openssl安裝目錄的include目錄, 來庫目錄中添加out32dll目錄。
或者將OpenSSL下的include文件夾、lib文件、dll文件考出,使用的時(shí)候包含進(jìn)去就行了。

































