1. 程式人生 > >Open SSL 開發環境配置

Open SSL 開發環境配置

ani 變量 visual sockets req win64 .net 標準 oar

Open SSL 開發環境配置

最後更新日期:2014-05-13

閱讀前提:VisualStudio的基本使用、Cent OS的基本使用

環境: Windows 8.1 64bit英文版,Visual Studio 2013 Professional Update1英文版,ActivePerl 5.16.3,openssl-1.0.1g,Cent OS 6.5 (32位),openssl-1.0.1e

在Windows下配置Open SSL開發環境

編譯32位Open SSL 依賴庫

[1]從Active Perl官網中下載ActivePerl 5.16.3 for Windows(64-bit,x64)並安裝

[2]從Open SSL官網中下載openssl-1.0.1g.tar.gz解壓縮到d:\sdk

當然你也可以解壓縮到其它路徑

[3]啟動[Visual StudioTools] -> [VS2013 x86 Native Tools Command Prompt]程序,進入d:\sdk\openssl_1.0.1g目錄下運行命令

perlConfigure VC-WIN32 no-asm

在ms子目錄下會生成do_nasm.bat等文件

[4]在當前目錄(D:\sdK\sopenssl-1.0.1g)調用下面的命令

ms\do_nasm.bat
在當前目錄的ms子目錄下生成nt.make和ntdll.make文件

[5]運行下面的命令,在out32目錄下生成靜態庫

nmake-f ms\nt.mak

也可以使用下面的命令在out32dll目錄下生成動態庫

nmake-f ms\ntdll.mak

[6]在Visual Studio 2013下新建Win32控制臺工程,不要自動生成代碼,添加Source.cpp文件,用下面的代碼測試Open SSL開發環境是否正常

[cpp] view plain copy
  1. #include <string>
  2. #include <iomanip>
  3. #include <iostream>
  4. #include <openssl/md5.h>
  5. using namespace std;
  6. #ifdef WIN32
  7. #pragma comment(lib, "libeay32.lib")
  8. #pragma comment(lib, "ssleay32.lib")
  9. #endif
  10. int main(int argc, char* argv[])
  11. {
  12. std::string str = "1234";
  13. unsigned char md[MD5_DIGEST_LENGTH];
  14. char tmp[3] = { 0 };
  15. MD5((const unsigned char*)str.c_str(), str.size(), md);
  16. for (int i = 0; i < MD5_DIGEST_LENGTH; i++)
  17. {
  18. cout<<setw(2)<<setfill(‘0‘)<<hex<<(int)(md[i]);
  19. }
  20. cout << endl;
  21. return 0;
  22. }

測試沒問題後,就可以用類似的方式編譯出Open SSL 64位動態庫和靜態庫文件

編譯64位Open SSL依賴庫

啟動[Visual Studio Tools] -> [VS2013 x64 Native Tools Command Prompt]程序,進入d:\sdk\openssl_1.0.1g目錄下運行下面六個命令

perlConfigure VC-WIN64A no-asm

ms\do_win64a.bat

nmake-f ms\nt.mak clean

nmake-f ms\ntdll.mak clean

nmake- f ms\nt.mak

nmake-f ms\ntdll.mak

由於產生的OpenSSL64位依賴庫同32位依賴庫同名而且同位置,所以我們只要把剛才新建的Win32項目,在項目屬性頁的[Configulation Manager]中把平臺屬性改成x64就可以正常調用OpenSSL 64位依賴庫了。上面命令中的“clean”參數是為了清除原來32位的文件否則nmake會失敗,同理從64位依賴庫改回32位也要用到“clean”參數。

你還可以用下面的兩條命令分別測試生成的Open SSL靜態庫和動態庫是否正常

nmake- f ms\nt.mak test

nmake-f ms\ntdll.mak test

如何想要把Open SSL生成的Win32依賴庫放到指定地方參考可以用下面的命令

perl Configure VC-WIN32 --prefix=F:/openssl

Cent OS下安裝Open SSL開發環境

使用下面的兩條命令安裝Open SSL

yum install openssl

yum install openssl-devel

使用下面的命令查看Open SSL安裝位置

whereis openssl

Windows下的libeay32.lib、ssleay32.lib分別對應linux下的libcrypto.so、libssl.so文件,它們缺省在/usr/lib路徑下,頭文件在/usr/incude目錄下。

把上面的源代碼復制到Cent OS後, 借助CMake工具編譯、運行成功。

下面是CMakeLists.txt文件清單

[html] view plain copy
  1. #設置項目名稱
  2. PROJECT(OpenSSLTutorial1)
  3. #要求CMake的最低版本為2.8
  4. CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
  5. #添加頭文件搜索路徑
  6. INCLUDE_DIRECTORIES(/usr/local/include)
  7. #添加庫文件搜索路徑
  8. LINK_DIRECTORIES(/usr/local/lib)
  9. #用於將當前目錄下的所有源文件的名字保存在變量 DIR_SRCS 中
  10. AUX_SOURCE_DIRECTORY(. DIR_SRCS)
  11. #用於指定從一組源文件 source1 source2 … sourceN(在變量DIR_SRCS中定義)
  12. #編譯出一個可執行文件且命名為OpenSSLTutorial1
  13. ADD_EXECUTABLE(OpenSSLTutorial1 ${DIR_SRCS})
  14. #添加編譯可執行程序所需要的鏈接庫、如果有多個中間用空格隔開
  15. #第一個參數是可執行程序名稱,第二個開始是依賴庫
  16. TARGET_LINK_LIBRARIES(OpenSSLTutorial1 ssl crypto)

libcrypto.so文件實現了各種加密算法,被OpenSSL用於實現SSL, TLSand S/MIME協議,也被用於SSH, OpenPGP等加密標準。

libssl.so庫文件實現SSL(theSecure Sockets Layer) v2/v3,和TLS(Transport Layer Security)協議。TLS與SSL在傳輸層對網絡連接進行加密。

補充閱讀資料

《調用OpenSSL實現數字簽名功能例程(一)》

http://blog.csdn.net/lee353086/article/details/7489863

《調用OpenSSL實現數字簽名功能例程(二)》

http://blog.csdn.net/lee353086/article/details/7489870

《VC2008下編譯OpenSSL》

http://blog.csdn.net/lee353086/article/details/7378835

《64位Win7下用VS2010編譯OpenSSL》

http://blog.csdn.net/henter/article/details/8364532

《wchar_t的問題》

http://bbs.chinaunix.net/archiver/?tid-1350913.html

《CentOS的軟件安裝方法rpm和yum》

http://www.discuz.net/thread-3513163-1-1.html

http://blog.csdn.net/lee353086/article/details/39433411

Open SSL 開發環境配置