Win7下安装/调试openssl

来源:互联网 发布:开淘宝都买宝马了 编辑:程序博客网 时间:2024/05/20 07:15

0x00前言

windows中安装openssl有两种方法:1)直接从http://slproweb.com/products/Win32OpenSSL.html下载已经编译好的安装包;2)使用VS编译源码进行安装。以下为第二种安装方法的具体步骤。

0x01安装openssl

1. 安装ActivePerl
从官网上http://www.activestate.com/activeperl下载与系统版本一致的安装包(32位或64位,32位版本只能生成32位版本的openssl库文件,64位版本可以选择生成32位或者64位版本的openssl库文件),这里选择32位版本。安装过程中选择配置环境变量。

测试是否安装成功:进入perl/eg,执行perl example.pl,若显示Hello from ActivePerl!,则说明安装成功。

2. 初始化VS编译环境
依次点击“开始”菜单 /Visual Studio 2010/Visual Studio Tools/Visual Studio 命令提示(2010)进入目录 Microsoft Visual Studio 10.0\VC\bin\ ,执行vcvars32.bat。

3. 配置openssl
从官网http://www.openssl.org/source/下载源码后解压,进入openssl目录中执行perl Configure VC-WIN32

4.执行ms\do_ms.bat
为了生成debug版本的库便于调试,需要修改do_ms.bat文件。修改后执行ms\do_ms.bat。
原文件:

perl util\mkfiles.pl >MINFOperl util\mk1mf.pl no-asm VC-WIN32 >ms\nt.makperl util\mk1mf.pl dll no-asm VC-WIN32 >ms\ntdll.makif x%OSVERSION% == x goto skipceperl util\mk1mf.pl no-asm VC-CE >ms\ce.makperl util\mk1mf.pl dll no-asm VC-CE >ms\cedll.mak:skipceperl util\mkdef.pl 32 libeay > ms\libeay32.defperl util\mkdef.pl 32 ssleay > ms\ssleay32.def

修改后的文件:

perl util\mkfiles.pl >MINFOperl util\mk1mf.pl debug no-asm VC-WIN32 >ms\nt.mak     #添加debugperl util\mk1mf.pl debug dll no-asm VC-WIN32 >ms\ntdll.mak  #添加debugif x%OSVERSION% == x goto skipceperl util\mk1mf.pl debug no-asm VC-CE >ms\ce.mak    #添加debugperl util\mk1mf.pl debug dll no-asm VC-CE >ms\cedll.mak  #添加debug:skipceperl util\mkdef.pl 32 libeay > ms\libeay32.defperl util\mkdef.pl 32 ssleay > ms\ssleay32.def

5.编译openssl
nmake -f ms\ntdll.mak —–编译动态库
nmake -f ms\nt.mak —–编译静态库

编译成功后,在openssl目录下会多出两个文件夹:
out32dll.dbg:存放动态库及相关文件,其中包含libeay32.dll、libeay32.lib和ssleay32.dll、ssleay32.lib。
out32.dbg:存放静态库及相关文件,其中包含libeay32.lib和ssleay32.lib。

ssleay32文件中包含与ssl协议相关的函数的实现,libeay32中包含与密码运算相关的函数的实现。

在VS项目中使用libeay32.dll和ssleay32.dll时,直接将这两文件放在exe程序所在目录下(如debug或release目录)。

注:
1)若出现nmake不是内部命令或外部命令,也不是可运行程序错误,把nmake的安装目录(E:\Program Files\Microsoft Visual Studio 10.0\VC\bin)加入环境变量可解决。

2)若出现NMAKE : fatal error U1077: '"path\cl.exe"': return code '0xc0000135' 错误,进入 E:\Program Files\Microsoft Visual Studio 10.0\VC目录执行vcvarsall.bat可解决。

3)测试

nmake -f ms\nt.mak testnmake -f ms\ntdll.mak test

测试结果如下则编译成功。
这里写图片描述
4)清除上次编译结果

nmake -f ms\ntdll.mak cleannmake -f ms\nt.mak clean

5.配置openssl的环境变量
安装完openssl后,每次执行openssl命令时都需要切换到openssl.exe所在目录下,为此,添加openssl环境变量(E:\openssl-1.0.1m\out32dll.dbg)即可在任意目录下运行openssl。

如果在打开时候出现WARING:can't open config file:E:/openssl/ssl/openssl.cnf,只需要找到openssl.cnf所在目录(E:\openssl\apps\openssl.cnf),然后执行set OPENSSL_CONF=E:\openssl\apps\openssl.cnf即可解决

0x02 VS中使用openssl编程

编译好openssl库之后即可使用这些库来编程,但需要对VS进行一些设置,VS2010中的设置如下:

1. 设置头文件与库函数所在目录
项目/ 属性/ VC++目录/ 包含目录,该项设置为openssl的头文件目录(openssl/inc32)。
项目/ 属性/ VC++目录/ 库目录,该项设置为openssl的编译生成的lib、dll所在的目录(openssl/ out32dll.dbg)。

2. 设置附加依赖项
项目/ 属性/ 连接器/输入/ 附加依赖项,添加libeay32.lib与ssleay32.lib两项。

3. 设置附加包含目录
项目/ 属性/ C/C++/ 常规/ 附加包含目录,该项设置为openssl的头文件目录(openssl/inc32)。

0x03 VS中调试openssl源码

因为openssl的编译是通过Makefile的方式,不是建了一个VS的solution,所以不能很方便地加断点进行debug。但是VS的断点原理很简单,就是插入一条软件中断的汇编,于是我们也效仿之。

在想要调试的地方,插入以下汇编指令。

__asm int 3

然后重新编译源码,运行程序就能debug了。


References:
http://blog.csdn.net/houjixin/article/details/25806151
http://blog.csdn.net/henter/article/details/8364532

http://ourlove11.blog.163.com/blog/static/21266600520129217234263/
http://www.cnblogs.com/liping13599168/archive/2011/03/16/1986024.html

http://blog.csdn.net/hudaiqian/article/details/6232567

0 0
原创粉丝点击