Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux教程 >> Windows下OpenSSL安裝配置基礎教程

Windows下OpenSSL安裝配置基礎教程

日期:2017/2/7 14:38:44      編輯:Linux教程
 

最近用到openssl,以前從來沒用過,所以感覺特陌生,從下載安裝、到編譯通過,斷斷續續搞了兩天時間,網上關於openssl的文章也很多,但可能很難找到一篇能完全解決自己的問題的,最終也是東拼西湊才終於通過。所以趕緊整理一下,或許後來者也能悟出點道道來。openssl官網文檔也很全面...遇到問題特別建議先看看官網FAQ以及openssl目錄下的install.w32(install.w64)文件(直接拉到浏覽器)。

本文系統環境:Windows XP SP2+Visual Studio 2005+Perl 5.8.6+OpenSSL 0.9.8。

一、預安裝准備

1、安裝Visual Studio 2005

如果安裝的是VC++60,實際在編譯OpenSSL時,總是會缺少某些文件,比如ml.exe,cl.exe....還有masm錯誤等,頭都大了,還等著要測試,沒時間一點點去試,直接換成Visual Studio 2005了。

2、安裝Perl

下載地址:http://www.activestate.com/ActivePerl

天緣安裝的ActivePerl-5.8.6.811-MSWin32-x86-122208.msi版本,太高版本沒用,以前做手機軟件時一直對這個版本傾愛有加。默認安裝目錄C:\Perl。

3、下載OpenSSL 0.9.8

下載地址:http://www.openssl.org/source/,版本不要太新(如果是做產品開發建議用最新的,前期測試所有軟件都可以用老一點的,會少一些兼容問題,新版本往往跨度較大,修改較多,多個軟件配合時自然很容易打架)。

如果只是使用OPENSSL,而且版本合適,可以嘗試人家編譯好了的,直接下載安裝即可:

http://www.openssl.org/related/binaries.html

二、安裝OpenSSL

1、解壓OpenSSL到系統盤

比如C:\OpenSSL。

2、配置WIN32環境

打開CMD命令行,進入C:\OpenSSL目錄,執行命令

perl Configure VC-WIN32

3、進入VC BIN目錄,配置VC環境變量

進入VS安裝路徑VC/Bin目錄下,運行:

VCVARS32.BAT

設置環境變量。

4、返回OpenSSL目錄,創建makefile文件

ms\do_ms

該命令不執行匯編語言編譯,如報告文末錯誤,可以嘗試ms\do_masm(使用匯編語言)、ms\do_nasm、ms\do_nt等,這幾個配置文件是針對不同的系統配置寫的批處理。

至於這幾個命令區別如下,其它的暫時沒用到未深究,有經驗之士歡迎賜教。

- If you are using MASM then run:

> ms\do_masm

- If you are using NASM then run:

> ms\do_nasm

- If you don't want to use the assembly language files at all then run:

> ms\do_ms

5、在Openssl目錄下,執行編譯

nmake -f ms\ntdll.mak

最終編譯動態庫完成後,輸出都在out32dll目錄下:包括可執行文件、兩個dll 和兩個lib文件: libeay32.dll, libeay32.lib, ssleay32.dll, ssleay32.lib,如果使用VS/VC編程只需按照下文的方法進行即可,如果需要使用openssl命令,還需要在系統環境變量path中增加c:\openssl\out32dll路徑,因為openssl.exe就在該目錄下,聲明後可以直接在命令行中使用openssl命令。

三、編程設置

1、 配置包含文件

打開VS->Tools->Options->projects and solutions->VC++ Directories(VC6路徑VC->Tools->Options->Directories),在Include files中增加C:\openssl\inc32目錄,假設openssl安裝目錄為C:\openssl,下同。

在Libray files中增加C:\openssl\out32dll。

2、 包含頭文件,導入LIB庫

在源程序中包含以下三個頭文件並加入LIB:

#include <openssl/ssl.h>
#include <openssl/err.h>
#include <openssl/bio.h>
#pragma comment(lib, "libeay32.lib")

#pragma comment(lib, "ssleay32.lib")

3、 更多OpenSSL編程參考:

四、常見錯誤及解決方法

1、不認識NMAKE?

解決辦法A:http://www.question-defense.com/2009/03/27/nmake-is-not-recognized-as-an-internal-or-external-command-operable-program-or-batch-file

解決辦法B:使用VS2005的控制台,開始菜單->Microsoft Visual Studio 2005->Visual Studio Tools->Visual Studio 2005 Command Prompt。NMAKE目錄實際在C:\Program Files\Microsoft Visual Studio 8\VC\bin下。

2、NMAKE編譯fatal error?

NMAKE : fatal error U1077: 'cl' : return code '0x2'

NMAKE : fatal error U1077: 'ml' : return code '0x1'

NMAKE : fatal error U1077: 'link' : return code '0x460'

遇到以上錯誤,請參考:http://www.flatws.cn/article/program/perl/2011-05-19/26439.html

3、NMAKE編譯遇到message Error?

如果遇到:

Message: 'The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _read. See online help for details.' NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\cl.EXE"' : return code '0x2'

Stop.

錯誤,打開ms\ntdll.mak,把CFLAG= /MD /W3 /WX....裡的/WX標志去掉。

4、_md5_block_asm_host_order編譯錯誤?

如果出現下面錯誤,可以嘗試使用ms\do_masm編譯命令。

link /nologo /subsystem:console /machine:I386 /opt:ref /dll /out:out32 dll\libeay32.dll /def:ms/LIBEAY32.def @C:\DOCUME~1\Test\LOCALS~1\Temp\nm58C.tmp ms/LIBEAY32.def(7) : warning LNK4017: DESCRIPTION statement not supported for the target platform; ignored
Creating library out32dll\libeay32.lib and object out32dll\libeay32.exp
md5_dgst.obj : error LNK2019: unresolved external symbol _md5_block_asm_host_order referenced in function _MD5_Update
out32dll\libeay32.dll : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\link.EXE"' : return code '0x460'
Stop.

Copyright © Windows教程網 All Rights Reserved