Win7系统下OpenSSL安装及测试
来源:互联网 发布:对比分析两个表格数据 编辑:程序博客网 时间:2024/06/06 10:58
一、Win7系统下OpenSSL安装及测试
1、 环境:
操作系统:Win7
VC环境:VC 6.0
2、 实验前准备
2.1 下载
下载OpenSSL地址:
http://www.openssl.org/source/
版本openssl-0.9.8e,注意版本号,高于当前版本号本方法不能成功安装。
下载ActivePerl地址
http://www.activestate.com/activeperl/downloads
版本号5.16.3.(最新的即可)
下载MASM32地址(因为VC的Bin下需要一个ml.exe文件,下载安装好MASM32,将ml.exe拷贝到Bin目录下即可)
http://www.microsoft.com/downloads/details.aspx?familyid=7A1C9DA0-0510-44A2-B042-7EF370530C64&displaylang=en
最新版即可
3、安装
3.1 安装ActivePerl(安装得到一个per脚本解释器,因为编译OpenSSL需使用)
(1)点击安装包即可,如下图
(2)测试
在安装完后,可以进入命令行模式,进入perl安装目录下,
执行“perlexample.pl”
若显示“Hellofrom ActivePerl!”,则说明Perl安装成功,说明可以使用Perl的相关命令来进行OpenSSL的安装了
3.2 安装OpenSSL
(1)首先初始化VC++6.0的环境变量
切换到VC98的Bin目录下,输入VCVARS32.BAT,显示如下
(注:VCVARS32.bat是注册环境变量,运行后VC才能找到编译所需要的库)
(2)配置编译参数
切换到openssl-0.9.8e目录下(即解压openssl-0.9.8e软件包,得到的文件)
执行perl Configure VC-WIN32 --prefix=c:/openssl-0.9.8e 显示如下:
(3)ms\do_ms
继续在命令行执行ms\do_ms,截图如下:
显示如下:
(3)编译动态链接库
命令行下执行命令(在openssl-0.9.8e目录下):nmake -f ms\ntdll.mak
显示如下:
如果编译成功, 输出在out32dll目录下,包括可执行文件、两个dll和两个lib文件:
libeay32.dll, libeay32.lib, ssleay32.dll,ssleay32.lib
(4)测试
使用命令“nmake -f ms\ntdll.mak test”,显示如下:
说明安装成功,OpenSSL在Windows环境下编译成功。
注:
编译分为两种情况,分为动态库和静态库,我用的方法是动态编译。
(1) 编译动态库:nmake -f ms\ntdll.mak
编译成功文件夹out32dll里输出的文件包括:应用程序的exe文件、lib文件、dll文件
(2) 编译静态库:nmake -f ms\nt.mak
编译成功文件夹out32dll里输出的文件包括:应用程序的exe文件、lib文件
其他命令:
测试OpenSSL动态库:nmake -f ms\ntdll.mak test
测试OpenSSL静态库:nmake -f ms\nt.mak test
安装OpenSSL动态库:nmake -f ms\ntdll.mak install
安装OpenSSL静态库:nmake -f ms\nt.mak install
清除上次OpenSSL动态库的编译,以便重新编译:nmake -f ms\ntdll.makclean
清除上次OpenSSL静态库的编译,以便重新编译:nmake -f ms\nt.makclean
(5)安装编译后的OpenSSL到制定目录
命令行下执行命令:nmake -fms\ntdll.mak install
安装编译后的OpenSSL到指定目录。
4、编译遇到的问题以及解决方法
4.1 nmake不是内部或者外部号令或者.bat文件
两种解决办法:
(1)nmake.exe的文件位于C:\ProgramFiles\MicrosoftVisual Studio\VC98\Bin目次中,设备景象变量即可。
右键单击我的电脑-->属性-->高等-->环境变量--高级变量(找到path)-->编辑,将C:\Program Files\Microsoft Visual Studio\VC98\Bin加到未尾,重启cmd,新的path才会生效
(2)重新在VC98\Bin目录下执行VCVARS32.BAT,重新设置环境变量
4.2 执行nmake -f ms\ntdll.mak,报错
fatal error C1083: Cannotopen include file:""windows.h"": No such file or directoryNMAKE : fatal errorU1077: ""cl"" : return code""0 x2""Stop.的错误”
解决办法:
先运行vcvars32,vcvars32.bat用于设置VC号令行编译的环境变量。 再次运行“nmake -fms\ntdll.mak”
4. 3执行nmake -fms\ntdll.mak,提示ml不是可识别的指令
解决方法:
下载安装好MASM32,将ml.exe拷贝到Bin目录下即可。
二、VC环境下编写一个简单OpenSSL程序
1. 配置VC环境
这里主要是将生成的OpenSSL有关库文件的路径添加到VC中。
在VC++ 6.0的工具—>选项—>目录下
Include files下添加OpenSSL安装目录下的include目录;
在Libraryfiles下添加out32dll目录
截图分别如下:
2. 编写OpenSSL程序
以一个大数乘法为例:
编写代码如下,同时将libeay32.lib和ssleay32.lib(编译成功后在out32dll文件夹中生成)拷贝到程序所在目录下即可
#include <openssl/bn.h>
#include <string.h>
#include <openssl/bio.h>
//注意添加这两行,因为用到了这两个库中的函数,可能包含了它的头文件(声明部分),实现部分在这个lib文件中,这个就是告诉编译器链接这个lib文件(不然找不到函数的实现)
#pragma comment(lib,"libeay32.lib")
#pragma comment(lib,"ssleay32.lib")
int main()
{
BIGNUM *a,*b,*add;
BIO *out;
char c[20],d[20];
int ret;
a=BN_new();
strcpy(c,"32");
ret=BN_hex2bn(&a,c);
b=BN_new();
strcpy(d,"100");
ret=BN_hex2bn(&b,d);
out=BIO_new(BIO_s_file());
ret=BIO_set_fp(out,stdout,BIO_NOCLOSE);
add=BN_new();
ret=BN_add(add,a,b);
if(ret!=1)
{
printf("err.\n");
return -1;
}
BIO_puts(out,"bn 0x32 + 0x100 = 0x");
BN_print(out,add);
BIO_puts(out,"\n");
BN_free(a);
BN_free(b);
BN_free(add);
BIO_free(out);
return 0;
}
运行会报错如下:
解决方法:
(1) 头文件加入 #include "applink.c"
(2) 在VC++ 6.0的工具—>选项—>目录下Include files下添加一条新的路径,即下方蓝色区域,该路径包含上述头文件。
再次运行,成功,显示如下:
- Win7系统下OpenSSL安装及测试
- WIN7下安装openssl
- Win7下安装/调试openssl
- win7系统下安装、配置、测试nginx
- WIN7 64位系统 VS2012 安装openssl
- openssl win7安装及应用于code blocks
- Windows7系统下安装OpenSSL
- windows系统下安装openssl
- WIN7 64位下安装OPENSSL
- Windows下安装rabbitmq及安装openssl
- Openssl WIN7 x64 安装
- win7在64位系统下编译openssl
- [转]Windows7系统下安装OpenSSL攻略
- Windows7 64位系统下安装OpenSSL
- Windows7系统下安装OpenSSL攻略
- win7 64位系统+vs2010 编译安装openssl
- OPENSSL WIN32下的安装及使用
- windows下安装OpenSSL及配置
- CSDN转载技巧
- vue2.0——生命周期
- Java关键字final、static使用总结
- C/S和B/S结构区别整理
- 深入分析 ThreadLocal 内存泄漏问题
- Win7系统下OpenSSL安装及测试
- 欢迎使用CSDN-markdown编辑器
- javaFX详细教程
- LeetCode上reverse bits的C++解法
- GDB调试
- TCP客户端
- Android studio 快捷键和工具
- Webpack2 完整踩坑教程(六)
- CRM管理创新医院服务新体系