Win32平台下的Openssl学习总结
Openssl包是共同开发的一个完备的,商业级别的,完全开放源代码的软件包。它实现了SSL协议及相关的加密技术。其中SSL是一个安全传输协议,在Internet网上进行数据保护和身份确认。 一、 Openssl的安装与编译
首先需要下载Openssl和Perl,Visual C++编译器,其中Openssl可以在http://www.openssl.org/source 网站中下载。
其次直接把Openssl解压即可,如:C:\\根目录下。 再次,将下载的ActivePerl-5.8.0.806-MSWin32-x86和Visual C++ 进行解压并安装。
完成这一切后进行如下操作:
1) 在“运行”中输入cmd,进行MS-DOS环境
2) 找到openssl解压到的目录,如在C盘根目录,文件名为:
openssl-0.9.7e,输入语句:Perl Configure VC-WIN32 即:C:\\ openssl-0.9.7e >Perl Configure VC-WIN32 会有如下显示:
注:如未出现以上界面,则表明操作有误,而重新解压Openssl再重新操作。若出现如上界面表示Perl已经成功安装且在环境变量Path中加入了C:\\Perl\\bin(Perl安装的目录,会安装时自动加入,可以通过查看环境变量看到,如没有,需自己手动加入)。
3) 还是在Openssl的目录下输入ms\\do_ms.bat,即:
C:\\ openssl-0.9.7e >ms\\do_ms.bat,则会有如下类似输出:
4) 在MS-DOS方式下转到Visual C++的安装目录下的bin目录中,默认目
录是:C:\\Program Files\\Microsoft Visual Studio\\VC98\\bin,执行vcvars32.bat,以配置环境变量。有如图输入:
5) 再回到Openssl的目录,执行:nmake -f ms\\ntdll.mak。
即:C:\\ openssl-0.9.7e > nmake -f ms\\ntdll.mak 如图:
会有如下类似显示:
如果编译成功,最后的输出都在C:\\openssl-0.9.7e\\out32dll目录下:包括可执行文件(.exe)、两个dll文件和两个lib文件。 注:为了可以方便的使用生成的库及可执行文件,需要在环境变量的path项中加入:C:\\openssl-0.9.7e\\out32dll目录。这样就可以使用openssl。
二、创建自己的认证中心 1、认证中心:
认证中心是提供你在应用程序中需要的各种签名认证的场所。最著名的一些都是Verisign公司和Thawte公司,它们提供网络服务上的SSL认证和微软公司的ActiveX销售的数字签名。这些认证提供加密,提供的安全性能确保公司的安全通信。
创建自己的认证中心,开发者能够在自己的应用软件或程序中使用自己的认证证书。由Trizen设计开发的Visual 3270和Visual SSL都是用基于Trizen 服务的认证中心进行的签名的认证证书。如果你想建立一个自己的签名证书,就需要在自己的网络中建立一个能够被访问的认证中心(CA)架构。 1)建立目录结构
在自己的硬盘上建立一个目录名为CARoot的文件。例如我们可以把这个目录建立在C盘根目录C:\\CARoot。在这个目录中创建四个新的目录,分别为certs, crl, newcerts, private。结构类似如下:
注:这些文件目录在建立证书时使用。 2)建立一个随机文件(.rnd)
在private子目录中建立一个扩展名为.rnd的文件(注:不要在扩展名前加前缀,也就是说文件名就是“.rnd”而不是random.rnd或其它什么名字)。 建立方法是:在运行中输入“cmd”,打开cmd.exe,进入C:\\CARoot目录,输入
edit private\\.rnd
即:C:\\CARoot>edit private\\.rnd 当看到MS-DOS文件编辑窗口后,输入大串的数字或者打开一个已经有很多数字的文件,并保存文件。这样就在C:\\CARoot\\private目录下建好了一个.rnd文件。 如图:
3)建立CA Key文件
生成自己的认证机构(CA)的私钥和证书文件。这些文件将在你使用你自己的CA创建其他的认证签名时使用。进入CARoot目录, 输入openssl genrsa –out private\\ca.key –rand private\\.rnd 2048
上面的语句将产生一个RSA私钥文件,它就是CA私钥文件并且将被用来产生公共的证书。如果输入此语句后提示“目录错误(bad command)”,则说明你没有在坏境变量中加入C:\\openssl-0.9.7e\\out32dll\\release,这个是经过Visual c++编译后生成的Openssl库文件所在的目录。如果一切都运行正确,则会看到与如下类似的画面:
说明:这个“经过Visual c++编译”的编译文件是通过下载一个叫做
Msvc097.rar 的文件,解压后即可以看到有个openssl.dsw的工作单元文件,用c++编译后即可。
http://www.infosecurity.org.cn/forum/read.php?fid=11&tid=301
&fpage=1,这个是下载网页,针对openssl-0.9.7e/f版本的,在0.9.8的版本上,效果不对。但是本次实现偶尔也没有产生预期的release文件夹,研究中。
如果想对所生成的私钥文件加一个密码,这也是被提倡使用的,则可以执行下面的代码来代替刚才已经生成的文件。
C:\\CARoot> openssl genrsa –out private\\ca.key –rand private\\.rnd –des3 2048 可以注意到所加的只是一个“–des3”,如果想了解genrsa这个指令的更多信息,可以执行以下指令
C:\\CARoot> openssl genrsa –help
你可以用这个命令来了解更多的OpenSSL指令,并且当忘记哪一个指令用法时可以方便的查找。
三、创建一个配置文件(OpenSSL.cnf)
这个配置文件的名字为:OpenSSL.cnf,被用来创建公共证书。这个配置文件包含所有的基于CA体系结构和CA密钥文件来产生公共证书所必须的怕有信息。在OpenSSL文件的apps目录下提供了一个配置文件的例子。但是,Windows系统把.cnf扩展名的文件都作为speed dial类型文件来看待,并且认为是本地文件,所以如果找一个名为“openssl”的这种扩展名的文件就是要找类型为speed dial,名称为openssl的文件。如下:
从openssl-0.9.7e/apps目录下复制openssl.cnf文件,即图中所选中的文件到CARoot目录下。打开cmd.exe,在CARoot目录中输入edit openssl.cnf 即:C:\\CARoot>edit openssl.cnf
这样将在MS-DOS的编辑器中打开openssl.cnf的内容,使其处在编辑状态。如图: