您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > Win32平台下的Openssl学习总结
Win32平台下的Openssl学习总结Openssl包是共同开发的一个完备的,商业级别的,完全开放源代码的软件包。它实现了SSL协议及相关的加密技术。其中SSL是一个安全传输协议,在Internet网上进行数据保护和身份确认。一、Openssl的安装与编译首先需要下载Openssl和Perl,VisualC++编译器,其中Openssl可以在网站中下载。其次直接把Openssl解压即可,如:C:\根目录下。再次,将下载的ActivePerl-5.8.0.806-MSWin32-x86和VisualC++进行解压并安装。完成这一切后进行如下操作:1)在“运行”中输入cmd,进行MS-DOS环境2)找到openssl解压到的目录,如在C盘根目录,文件名为:openssl-0.9.7e,输入语句:PerlConfigureVC-WIN32即:C:\openssl-0.9.7ePerlConfigureVC-WIN32会有如下显示:注:如未出现以上界面,则表明操作有误,而重新解压Openssl再重新操作。若出现如上界面表示Perl已经成功安装且在环境变量Path中加入了C:\Perl\bin(Perl安装的目录,会安装时自动加入,可以通过查看环境变量看到,如没有,需自己手动加入)。3)还是在Openssl的目录下输入ms\do_ms.bat,即:C:\openssl-0.9.7ems\do_ms.bat,则会有如下类似输出:4)在MS-DOS方式下转到VisualC++的安装目录下的bin目录中,默认目录是:C:\ProgramFiles\MicrosoftVisualStudio\VC98\bin,执行vcvars32.bat,以配置环境变量。有如图输入:5)再回到Openssl的目录,执行:nmake-fms\ntdll.mak。即:C:\openssl-0.9.7enmake-fms\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设计开发的Visual3270和VisualSSL都是用基于Trizen服务的认证中心进行的签名的认证证书。如果你想建立一个自己的签名证书,就需要在自己的网络中建立一个能够被访问的认证中心(CA)架构。1)建立目录结构在自己的硬盘上建立一个目录名为CARoot的文件。例如我们可以把这个目录建立在C盘根目录C:\CARoot。在这个目录中创建四个新的目录,分别为certs,crl,newcerts,private。结构类似如下:注:这些文件目录在建立证书时使用。2)建立一个随机文件(.rnd)在private子目录中建立一个扩展名为.rnd的文件(注:不要在扩展名前加前缀,也就是说文件名就是“.rnd”而不是random.rnd或其它什么名字)。建立方法是:在运行中输入“cmd”,打开cmd.exe,进入C:\CARoot目录,输入editprivate\.rnd即:C:\CARooteditprivate\.rnd当看到MS-DOS文件编辑窗口后,输入大串的数字或者打开一个已经有很多数字的文件,并保存文件。这样就在C:\CARoot\private目录下建好了一个.rnd文件。如图:3)建立CAKey文件生成自己的认证机构(CA)的私钥和证书文件。这些文件将在你使用你自己的CA创建其他的认证签名时使用。进入CARoot目录,输入opensslgenrsa–outprivate\ca.key–randprivate\.rnd2048上面的语句将产生一个RSA私钥文件,它就是CA私钥文件并且将被用来产生公共的证书。如果输入此语句后提示“目录错误(badcommand)”,则说明你没有在坏境变量中加入C:\openssl-0.9.7e\out32dll\release,这个是经过Visualc++编译后生成的Openssl库文件所在的目录。如果一切都运行正确,则会看到与如下类似的画面:说明:这个“经过Visualc++编译”的编译文件是通过下载一个叫做Msvc097.rar的文件,解压后即可以看到有个openssl.dsw的工作单元文件,用c++编译后即可。=11&tid=301&fpage=1,这个是下载网页,针对openssl-0.9.7e/f版本的,在0.9.8的版本上,效果不对。但是本次实现偶尔也没有产生预期的release文件夹,研究中。如果想对所生成的私钥文件加一个密码,这也是被提倡使用的,则可以执行下面的代码来代替刚才已经生成的文件。C:\CARootopensslgenrsa–outprivate\ca.key–randprivate\.rnd–des32048可以注意到所加的只是一个“–des3”,如果想了解genrsa这个指令的更多信息,可以执行以下指令C:\CARootopensslgenrsa–help你可以用这个命令来了解更多的OpenSSL指令,并且当忘记哪一个指令用法时可以方便的查找。三、创建一个配置文件(OpenSSL.cnf)这个配置文件的名字为:OpenSSL.cnf,被用来创建公共证书。这个配置文件包含所有的基于CA体系结构和CA密钥文件来产生公共证书所必须的怕有信息。在OpenSSL文件的apps目录下提供了一个配置文件的例子。但是,Windows系统把.cnf扩展名的文件都作为speeddial类型文件来看待,并且认为是本地文件,所以如果找一个名为“openssl”的这种扩展名的文件就是要找类型为speeddial,名称为openssl的文件。如下:从openssl-0.9.7e/apps目录下复制openssl.cnf文件,即图中所选中的文件到CARoot目录下。打开cmd.exe,在CARoot目录中输入editopenssl.cnf即:C:\CARooteditopenssl.cnf这样将在MS-DOS的编辑器中打开openssl.cnf的内容,使其处在编辑状态。如图:其包含的内容中最重要的部分如下:1、dir:“.”表示(openssl.cnf)这个配置文件被存储的当前目录。因为我们已经为要建立的认证建立了个目录CARoot,所以需把dir的目录:./demoCA改为:“.”,使用所建立的文件目录。说明:根据用户设定的路径更改此路径2、certs:已经发布或者请求的认证存放的位置。3、crl_dir:保存撤回即销毁的证书列表,这些证书将不需要再被接受,即不可再被使用。4、database:一个文本(index.txt)文件,用来保存已发行证书的编号信息。5、new_certs_dir:用来保存签名证书。如果按1中已经改的目录,则这个目录就是:C:\CARoot\newcerts6、certificate:这个CA签名来源于CA密钥文件(ca.crt);说明:这个属性是根据用户设置的文件名不同而不同的,本次实验用的是ca.crt,若下次实验用其他的文件名,需要在此配置文件中做相应的修改。7、serical:每一个证书在它产生时就被赋于了一个序列号(serialnumber),用这个来记录增加量。8、private_key:CA密文件,保存私钥(ca.key);说明:同69、RANDFILE:这个文件在产生密钥时使用,值得注意的事,加密算法的一些不足会通过使用随机数而避免,使其具有更好的保密性。其他的部分将在产生公用证书时使用,例如什么样的问题将要被问,它们将被怎么来提问以及其他默认设置。后面你会注意到在这个配置文件中默认的国家是AU,你可以把它改成你的国家的代号,如US(美国)。在这一点上,要保证使每一处修改在配置文件openssl.cnf中都能突出显示。如果你已经做了与上面相类似的配置文件(openssl.cnf),将它保存在C:\CARoot目录下,这样你在CARoot目录下就有这样一个配置文件。四、在打开配置文件时存在一些问题如果利用上面那种方法打开配置文件时存在一些问题,不是警告。则进入openssl.cnf所存在的那个目录进行操作,即在openssl-0.9.7e/apps目录下:C:\openssl-0.9.7e\appseditopenssl.cnf这样将会打开MS-DOS编辑器,你同样可以做自己的一些修改,然后另存到CARoot目录下。五、为CA创建Datebase文件(index.txt)和序列文件(serial)可以在配置文件(openssl.cnf)中知道database文件的位置,它指向了一个文件名为(index.txt)的文件。这个文件是由一行行的被CA签名的证书入口组成的。建立这个index文件,需要在C:\CARoot目录下输入:touch.\index.txt即:C:\CARoottouch.\index.txt注:Touch是一个程序,用来用当前的系统时间来设置文件的时间戳。如果当前没有touch.exe文件或类似的文件,不用担心,只需手工在CARoot目录下创建一个名为index.txt的文本文件即可。现在,你必须创建一个序列文件(serial).这个文件可以通过下面的方式被创建:打开MS-DOS窗口,输入语句echo01serial即:C:\CARootecho01serial通过这个命令,可以在CARoot目录下创建文件serial,可能使用计事本或editplus将其打开,打开后会发现它只有一行文字是:01,它将永远不会被引用。OpenSSL文件将使用两次不会被引用的“01”。所以,它在Windows系统中并不起什么作用。应该保证在使用中不对“01”进行引用。总结一下:现在在CARoot目录下有两个新的文件分别为serial和index.txt。注意这两个文件均在配置文件(openssl.cnf)中被声明过,分别是:database项(使用index.txt)和serial项(使用serial文件)。保证这两个文件在C:/CARoot目录下,而不是它的子目录下。六、建立一个CA证书通过这一部分,你可以成功地建立一个CA证书。首先要确保你已经把环境变量PATH中加入了C:\openssl-0.9.7e\out32dll\release目录(这个目录是在openssl.dsw中编译时生成的)。进入MS-DOS窗口(或双击CARoot目录下的cmd.exe文件),输入如下的语句:C:\CARootopensslreq–new–x509–days3650–keyprivate\ca.key–outprivate\ca.crt–configopenssl.cnf显示如下:通过上面的显示可以看出,我们被提出了一系列的问题。当你创建你自己的证书时应该有一个给这个证书签名的最长期限,比如10年(36500天),这是作为CA信息应该知道的。注意到一个问题是与配置文件(openssl.cnf)有关的。同样可以注意执行完这个命令后到,没有什么文件被添加到其他的目录如newcerts目录中。记住,跟上面一样,当使用req.exe可执行文件时,创建的是一个自签名证书!一个自签名证书是一个虚拟的
本文标题:Win32平台下的Openssl学习总结
链接地址:https://www.777doc.com/doc-4582309 .html