OpenSSL簡介及在Windows、Linux、Mac系統上的編譯步驟

來源:互聯網
上載者:User

標籤:des   http   io   os   使用   ar   for   strong   檔案   

OpenSSL介紹:OpenSSL是一個強大的安全通訊端層密碼庫,囊括主要的密碼演算法、常用的密鑰和認證封裝管理功能及SSL協議,並提供豐富的應用程式供測試或其它目的使用。

SSL是SecureSockets Layer(安全套接層協議)的縮寫,可以在Internet上提供秘密性傳輸。其目標是保證兩個應用間通訊的保密性和可靠性,可在伺服器端和使用者端同時實現支援。已經成為Internet上保密通訊的工業標準。

安全套接層協議能使使用者/伺服器應用之間的通訊不被攻擊者竊聽,並且始終對伺服器進行認證,還可選擇對使用者進行認證。SSL協議要求建立在可靠的傳輸層協議(TCP)之上。SSL協議的優勢在於它是與應用程式層協議獨立無關的,高層的應用程式層協議(例如,HTTP, FTP, TELNET等)能透明地建立於SSL協議之上。SSL協議在應用程式層協議通訊之前就已經完成密碼編譯演算法、通訊密鑰的協商及伺服器認證工作。在此之後應用程式層協議所傳送的資料都會被加密,從而保證通訊的私密性。

SSL協議提供的安全通道有三個特性:(1)、資料的保密性:資訊加密就是把明碼的輸入檔案用密碼編譯演算法轉換成加密的檔案以實現資料的保密。加密的過程需要用到密鑰來加密資料然後在解密。沒有了密鑰,就無法解開加密的資料。資料加密之後,只有密鑰要用一個安全的方法傳送。加密過的資料可以公開地傳送。(2)、資料的完整性:加密也能保證資料的一致性。例如,訊息驗證碼(MAC),能夠校正使用者提供的加密資訊,接收者可以用MAC來校正加密資料,保證資料在傳輸過程中沒有被篡改過。(3)、安全驗證:加密的另外一個用途是用來作為個人的標識,使用者的密鑰可以作為他的安全驗證的標識。SSL是利用公開密鑰的加密技術(RSA)來作為使用者端與伺服器端在傳送機密資料時的加密通訊協定。

OpenSSL採用C語言作為開發語言,這使得OpenSSL具有優秀的跨平台效能。OpenSSL支援Linux、Windows、BSD、Mac、VMS等平台。

OpenSSL整個軟體包大概可以分成三個主要的功能部分:SSL協議庫、應用程式以及密碼演算法庫。

OpenSSL對於隨機數的產生和管理也提供了一整套的解決方案和支援API函數。隨機數的好壞是決定一個密鑰是否安全的重要前提。

OpenSSL還提供了其它的一些協助工具功能,如從口令產生密鑰的API,認證簽發和管理中的設定檔機制等等。

OpenSSL提供了產生各種公開金鑰組和對稱金鑰的方法、函數和應用程式,同時提供了對公開金鑰和私密金鑰的DER編解碼功能。OpenSSL在標準中提供了對私密金鑰的加密保護功能,使得密鑰可以安全地進行儲存和分發。

OpenSSL一共提供了8種對稱式加密演算法,其中7種是區塊編碼器演算法,僅有的一種流密碼編譯演算法是RC4.這7種區塊編碼器演算法分別是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支援電子密碼本模式(ECB)、加密分組連結模式(CBC)、加密反饋模式(CFB)和輸出反饋模式(OFB)四種常用的分組密碼加密模式。其中,AES使用的加密反饋模式(CFB)和輸出反饋模式(OFB)分組長度是128位,其它演算法使用的則是64位。

OpenSSL一共實現了4種非對稱式加密演算法,包括DH演算法、RSA演算法DSA演算法和橢圓曲線演算法(EC)。DH演算法一般用於金鑰交換。RSA演算法既可以用於金鑰交換,也可以用於數位簽章。DSA演算法則一般只用於數位簽章。

OpenSSL實現了5種資訊摘要演算法,分別是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA演算法事實上包括了SHA和SHA1兩種資訊摘要演算法。此外,OpenSSL還實現了DSS標準中規定的兩種資訊摘要演算法DSS和DSS1.

OpenSSL的應用程式主要包括密鑰產生、認證管理、格式轉換、資料加密和簽名、SSL測試以及其它輔助配置功能。

Engine機制目的是為了使OpenSSL能夠透明地使用第三方提供的軟體加密庫或者硬體加密裝置進行加密。

 

         OpenSSL在Windows7 64bit + vs2010中win32的編譯步驟

1.      從https://www.openssl.org/source/下載OpenSSL原始碼 openssl-1.0.1g版本;

2.        從http://www.activestate.com/activeperl/downloads下載ActivePerl5.16.3 x64(ActivePerl為perl的一個指令碼解譯器);

3.        將ActivePerl安裝到D:\ProgramFiles\Perl64目錄下,開啟命令提示字元,將其定位到D:\ProgramFiles\Perl64\eg 目錄下,執行perl  example.pl ,若提示Hello fromActivePerl! 則說明Perl安裝成功,可以開始使用Perl的相關命令來進行OpenSSL的安裝了;

4.        將openssl-1.0.1g解壓縮到E:\OpenSSL\openssl-1.0.1g目錄下;

5.        從http://sourceforge.net/projects/nasm/下載nasm 2.07,將其安裝到D:\ProgramFiles\NASM中,並將D:\ProgramFiles\NASM添加到系統內容變數Path中;

6.        將命令提示字元定位到E:\OpenSSL\openssl-1.0.1g;

7.        輸入perl  Configure  VC-WIN32 --perfix=E:\OpenSSL\openssl (將其安裝到E:\OpenSSL\openssl);

8.      輸入ms\do_nasm ;

9.        將命令提示字元定位到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin , 然後輸入 vcvars32.bat,會顯示Settingenvironment for using Microsoft Visual Studio 2010 x86 tools. 如果沒有這一步,會提示nmake不是內部或外部命令;

10.  再次將命令提示字元定位到E:\OpenSSL\openssl-1.0.1g;

11.    輸入 nmake  –f  ms\ntdll.mak ;執行完後會在openssl-1.0.1g目錄下產生一個out32dll檔案夾,裡麵包含了一些靜態庫、動態庫和.exe檔案;

12.    輸入 nmake  -f  ms\ntdll.mak test ;若最終顯示passed  all  tests說明產生的庫正確;

13.    輸入 nmake  -f  ms\ntdll.mak install ;則會在E:\OpenSSL\openssl目錄下產生bin、include、lib、ssl四個檔案夾;

14.    以上編譯的是release庫,若編譯debug庫,則將以上第7步中的VC-WIN32改成debug-VC-WIN32即可;

15.    若編譯靜態庫則用ms\nt.mak替換掉上面用到的ms\ntdll.mak即可;

16.    若產生不帶彙編支援的庫,則需將以上第7、8步用perl  Configure  VC-WIN32 no-asm --prefix=E:\OpenSSL\openssl  和 ms\do_ms替換即可;

17.  在E:\OpenSSL\openssl-1.0.1g\tmp32dll檔案夾下包含相應的彙編檔案。

 

在win64下產生相應的庫和彙編檔案的編譯步驟

1.      將命令提示字元定位到E:\OpenSSL\openssl-1.0.1g;

2.      輸入 perl  Configure  VC-WIN64A --perfix=E:\OpenSSL\openssl\win64 ;

3.      輸入 ms\do_nasm ;

4.      輸入 ms\do_win64a ;

5.        將命令提示字元定位到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64 , 然後輸入 vcvars64.bat,會顯示Settingenvironment for using Microsoft Visual Studio 2010 x64  tools. 如果沒有這一步,會提示nmake不是內部或外部命令;

6.      再次將命令提示字元定位到E:\OpenSSL\openssl-1.0.1g;

7.        輸入 nmake  -f  ms\nt.mak ;執行完後會在openssl-1.0.1g目錄下產生out32和tmp32兩個檔案夾,out32檔案夾中會產生兩個靜態庫和一些執行檔案,tmp32檔案夾中會產生相應的彙編檔案;

8.        輸入 nmake  -f  ms\nt.mak test ;若最終顯示passed  all  tests說明產生的庫正確;

9.        輸入 nmake  -f  ms\nt.mak install ;則會在E:\OpenSSL\openssl\win64目錄下產生bin、include、lib、ssl四個檔案夾;

10.    以上編譯的是release庫,若編譯debug庫,則將以上第2步中的VC-WIN64A改成debug-VC-WIN64A即可;

11.  若編譯動態庫則用ms\ntdll.mak替換掉上面用到的ms\nt.mak即可;

12.    若產生不帶彙編支援的庫,則需將以上第2步用perl  Configure  VC-WIN64A no-asm --prefix=E:\OpenSSL\openssl\win64替換即可;

13.  在E:\OpenSSL\openssl-1.0.1g\tmp32檔案夾下包含相應的彙編檔案。

 

在虛擬機器Ubuntu 13.10  32bits下產生相應的庫和彙編檔案的編譯步驟

1.      將openssl-1.0.1g.tar.gz存放到/home/spring/OpenSSL下;

2.      解壓縮 tar  -xzf  openssl-1.0.1g.tar.gz ;

3.      終端定位到openssl-1.0.1g目錄中;

4.        執行 ./config --prefix=/home/spring/OpenSSL/openssl/linux32 (將其安裝到/home/spring/openssl/linux32目錄下);

5.        執行  ./config  -t ;

6.        執行  make  depend ;

7.        執行  make  (在/openssl-1.0.1g目錄下會產生libcrypto.a和libssl.a兩個靜態庫);

8.        執行  make  test  (若顯示 ALL  TESTS SUCCESSFUL說明產生的庫正確);

9.        執行  make  install (會在/openssl/linux32目錄下產生bin、include、lib、ssl四個檔案夾);

10.    以上產生的是release下的靜態庫,若要產生debug下的靜態庫,只需將第4步改為./config --prefix=/home/spring/OpenSSL/openssl/linux32 -g3即可;

11.    若要產生release動態庫,只需將第4步改為/config  --prefix=/home/spring/OpenSSL/openssl/linux32-shared即可;產生debug動態庫,只需將第4步改為/config --prefix=/home/spring/OpenSSL/openssl/linux32 -g3  -shared即可;

12.  目錄/openssl-1.0.1g/crypto中各檔案中包含產生的32位彙編檔案。

 

在虛擬機器Ubuntu 13.10  64bits下產生相應的庫和彙編檔案的編譯步驟

1.      將openssl-1.0.1g.tar.gz存放到/home/spring/OpenSSL下;

2.      解壓縮 tar  -xzf  openssl-1.0.1g.tar.gz ;

3.        終端定位到openssl-1.0.1g目錄中;

4.        執行 ./config --prefix=/home/spring/OpenSSL/openssl/linux64 -g3(將其安裝到/home/spring/openssl/linux64目錄下);

5.        執行  ./config  -t ;

6.        執行  make  depend ;

7.        執行  make  (在/openssl-1.0.1g目錄下會產生libcrypto.a和libssl.a兩個靜態庫);

8.        執行  make  test  (若顯示 ALL  TESTS SUCCESSFUL說明產生的庫正確);

9.        執行  make  install (會在/openssl/linux64目錄下產生bin、include、lib、ssl四個檔案夾);

10.    以上產生的是debug下的靜態庫,若要產生release下的靜態庫,只需將第4步改為./config --prefix=/home/spring/OpenSSL/openssl/linux64即可;

11.    若要產生release動態庫,只需將第4步改為/config --prefix=/home/spring/OpenSSL/openssl/linux64 -shared即可;產生debug動態庫,只需將第4步改為/config  --prefix=/home/spring/OpenSSL/openssl/linux64-g3  -shared即可;

12.    目錄/openssl-1.0.1g/crypto中各檔案中包含產生的64位彙編檔案。

 

在虛擬機器Mac  OS X  10.8.2 64bits下產生相應的32bits庫和彙編檔案的編譯步驟

已經在虛擬機器Mac上安裝了Xcode 4.5和Command LineTools!!

1.        將openssl-1.0.1g.tar.gz存放到/Users/spring/Desktop/OpenSSL下;

2.        解壓縮 tar  -xzf  openssl-1.0.1g.tar.gz ;

3.        終端定位到openssl-1.0.1g目錄中;

4.        執行 ./Configure darwin-i386-cc -shared --prefix=/Users/spring/Desktop/OpenSSL/openssl/mac32(將其安裝到/Users/spring/Desktop/OpenSSL/openssl/mac32目錄下);

5.        執行  make  (在/openssl-1.0.1g目錄下會產生相應的靜態庫和動態庫);

6.        執行  make  test  (若顯示 ALL  TESTS SUCCESSFUL說明產生的庫正確);

7.        執行  make  install (會在/openssl/mac32目錄下產生bin、include、lib、ssl四個檔案夾);

8.        以上產生的是release下的動態庫,若要產生debug下的動態庫,只需將第4步改為./Configure darwin-i386-cc -shared --prefix=/Users/spring/Desktop/OpenSSL/openssl/mac32 -g3即可;

9.        若要產生release靜態庫,只需將第4步改為./Configure darwin-i386-cc--prefix=/Users/spring/Desktop/OpenSSL/openssl/mac32即可;產生debug靜態庫,只需將第4步改為./Configuredarwin-i386-cc --prefix=/Users/spring/Desktop/OpenSSL/openssl/mac32 -g3即可;

10.    目錄/openssl-1.0.1g/crypto中各檔案中包含產生的32位彙編檔案。

 

在虛擬機器Mac  OS X 10.8.2  64bits下產生相應的64bits庫和彙編檔案的編譯步驟

1.        將openssl-1.0.1g.tar.gz存放到/Users/spring/Desktop/OpenSSL下;

2.        解壓縮 tar  -xzf  openssl-1.0.1g.tar.gz ;

3.        終端定位到openssl-1.0.1g目錄中;

4.        執行 ./Configure darwin64-x86_64-cc  --prefix=/Users/spring/Desktop/OpenSSL/openssl/mac64 (將其安裝到/Users/spring/Desktop/OpenSSL/openssl/mac64目錄下);

5.        執行  make  (在/openssl-1.0.1g目錄下會產生libssl.a和libcrypto.a兩個靜態庫);

6.        執行  make  test  (若顯示 ALL  TESTS SUCCESSFUL說明產生的庫正確);

7.        執行  make  install (會在/openssl/mac64目錄下產生bin、include、lib、ssl四個檔案夾);

8.        以上產生的是release下的靜態庫,若要產生debug下的動態庫,只需將第4步改為./Configure darwin64-x86_64-cc  --prefix=/Users/spring/Desktop/OpenSSL/openssl/mac64   -g3即可;

9.        若要產生release動態庫,只需將第4步改為./Configure darwin64-x86_64-cc -shared --prefix=/Users/spring/Desktop/OpenSSL/openssl/mac64即可;產生debug動態庫,只需將第4步改為./Configuredarwin64-x86_64-cc  -shared --prefix=/Users/spring/Desktop/OpenSSL/openssl/mac64  -g3即可;

10.    目錄/openssl-1.0.1g/crypto中各檔案中包含產生的64位彙編檔案。

 

也可直接運行.pl檔案來產生相應的彙編檔案。

 

參考文獻:

1.      http://baike.baidu.com/view/300712.htm?fr=aladdin

2.      原始碼中的INSTALL.W32、INSTALL.W64檔案

OpenSSL簡介及在Windows、Linux、Mac系統上的編譯步驟

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.