分类: C/C++
2013-03-11 10:27:25
一.实验目的
1.熟悉OpenSSL工具包环境的编程
2.编程实现一个简单的OpenSSL程序
二.实验步骤
1.阅读OpenSSL自带文档
2.编译OpenSSL源代码
3.配置OpenSSL编程环境
4.编写OpenSSL程序
5.调试程序
三.实验过程
3.1编译OpenSSL源码
3.1.1从工具包源码,解压缩源码。(或者直接应用教员提供的源码)
3.1.2安装perl。用perl配置解释配置文件,命令如下
> perl Configure VC-WIN32 -DOPENSSL_USE_IPV6=0 --prefix=c:\openssl |
其中--prefix=c:\openssl指明编译成功的库文件和可执行文件的存放路径。
一定要加上-DOPENSSL_USE_IPV6=0选项,不然会出现【NMAKE : fatal error U1077: 'cl' : return code '0x2'】的错误
3.1.3运行do_ms.bat配置windows下编译环境,命令如下
> ms\do_ms.bat |
3.1.4编译源码(编译为动态链接库),命令如下
修改:去掉ntdll.mak、nt.mak文件中/debug选项,不然引用库编程时可能会出现【fatal error LNK1103: debugging information corrupt; recompile module】的错误
> nmake -f ms\ntdll.mak(编译静态库:nmake -f ms\nt.mak) |
最后可能会出现“NMAKE:fatal error U1077:'ml':return error code '0x1'.stop.”的错误,由于没有找到ml.exe的汇编连接器,下载并放到当前目录即可。
3.1.5安装库文件和二进制文件,命令如下
> nmake -f ms\ntdll.mak install(安装静态库:nmake -f ms\nt.mak install) |
命令运行成功后会在刚刚设置的—prefix所指向的路径中出现如下目录和文件
3.2配置VC++6.0编译器开发环境
3.2.1 依次进入“工具”—>“选项”
3.2.2在“目录”选项卡中将include files和library files都设置成刚刚—prefix所指路径下的include和lib目录
3.2.3在自己编写的程序中加入所需的头文件,并且关联相应的库文件
3.2.4 依次打开“工程”-->“设置”,切换至“调试”选项卡,在下拉菜单选择“附加的DLLs”将—prefix所指目录中bin目录下的dll文件加入进去。
也可以直接将两个dll文件复制到自己编写程序的源码目录下。
3.3编写自己的openSSL程序(在openssl-0.9.8o\demos\ssl源码的基础上进行修改)
3.3.1 修改私钥及自签名证书的路径,windows下必须是全路径
3.3.2 制作私钥。切换至编译号的openssl.exe所在的路径,利用如下命令生成私钥文件
openssl.exe genrsa -out privatekey.pem 2048 |
3.3.3 制作自签名证书。切换至编译号的openssl.exe所在的路径,利用如下命令生成自签名证书
openssl.exe req -new -x509 -key privatekey.pem -out cacert.pem -days 1095 |
这时,会提示找不到openSSL配置文件,将./openssl.cnf文件复制入./ssl/,再次进行生成自签名证书。
填写相关信息
自签名证书和私钥生成成功!
3.4 openSSL程序测试
3.4.1 首先运行服务器ssl_serv.exe,之后运行客户端ssl_cli.exe
可以看到,二者进行了简单的通信。
3.4.2 利用wireshark截取二者通信的数据包,经过查看,并未有明文传送信息,证明通信过程加密成功