版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE33Win32平台下基于Openssl的数字证书实验Openssl包是共同开发的一个完备的,商业级别的,完全开放源代码的软件包。它实现了SSL协议及相关的加密技术。其中SSL是一个安全传输协议,在Internet网上进行数据保护和身份确认。Openssl的安装与编译首先需要下载Openssl和Perl,VisualC++编译器,其中Openssl可以在/source网站中下载。其次直接把Openssl解压即可,如:C:\根目录下。即:C:\openssl-0.9.8e再次,将下载的ActivePerl-06-MSWin32-x86和VisualC++进行解压并安装。完成这一切后进行如下操作:在“运行”中输入cmd,进行MS-DOS环境找到openssl解压到的目录,如在C盘根目录,文件名为:openssl-0.9.8e,输入语句:PerlConfigureVC-WIN32即:C:\openssl-0.9.8e>PerlConfigureVC-WIN32这一步可以确定系统的环境,使用什么编译器,默认安装路径及其他一些选项。会有如下显示:注:如未出现以上界面,则表明操作有误,而重新解压Openssl再重新操作。若出现如上界面表示Perl已经成功安装且在环境变量Path中加入了C:\Perl\bin(Perl安装的目录,会安装时自动加入,可以通过查看环境变量看到,如没有,需自己手动加入)。还是在Openssl的目录下输入ms\do_ms.bat,即:C:\openssl-0.9.8e>ms\do_ms.bat,则会有如下类似输出:这一步可以生成编译脚本在MS-DOS方式下转到VisualC++的安装目录下的bin目录中,默认目录是:C:\ProgramFiles\MicrosoftVisualStudio\VC98\bin,执行vcvars32.bat,以配置环境变量。有如图输入:再回到Openssl的目录,执行:nmake-fms\ntdll.mak。即:C:\openssl-0.9.8e>nmake-fms\ntdll.mak如图:会有如下类似显示:如果编译成功,最后的输出都在C:\openssl-0.9.8e\out32dll目录下:包括可执行文件(.exe)、两个dll文件和两个lib文件。注:为了可以方便的使用生成的库及可执行文件,需要在环境变量的path项中加入:C:\openssl-0.9.8e\out32dll目录。这样就可以使用openssl。在坏境变量中加入C:\openssl-0.9.8e\out32dll\release。二、创建自己的认证中心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:\CARoot>editprivate\.rnd当看到MS-DOS文件编辑窗口后,输入大串的数字或者打开一个已经有很多数字的文件,并保存文件。这样就在C:\CARoot\private目录下建好了一个.rnd文件。如图:三、创建一个配置文件(OpenSSL.cnf)这个配置文件的名字为:OpenSSL.cnf,被用来创建公共证书。这个配置文件包含所有的基于CA体系结构和CA密钥文件来产生公共证书所必须的所有信息。在OpenSSL文件的apps目录下提供了一个配置文件的例子。但是,Windows系统把.cnf扩展名的文件都作为speeddial类型文件来看待,并且认为是本地文件,所以如果找一个名为“openssl”的这种扩展名的文件就是要找类型为speeddial,名称为openssl的文件。如下:从openssl-0.9.8e/apps目录下复制f文件,即图中所选中的文件到CARoot目录下。打开cmd.exe,在CARoot目录中输入editf即:C:\CARoot>editf这样将在MS-DOS的编辑器中打开f的内容,使其处在编辑状态。如图:其包含的内容中最重要的部分如下:dir:“.”表示(f)这个配置文件被存储的当前目录。因为我们已经为要建立的认证建立了个目录CARoot,所以需把dir的目录:./demoCA改为:“.”,使用所建立的文件目录。说明:根据用户设定的路径更改此路径certs:已经发布或者请求的认证存放的位置。crl_dir:保存撤回即销毁的证书列表,这些证书将不需要再被接受,即不可再被使用。database:一个文本(index.txt)文件,用来保存已发行证书的编号信息。new_certs_dir:用来保存签名证书。如果按1中已经改的目录,则这个目录就是:C:\CARoot\newcertscertificate:这个CA签名来源于CA密钥文件(ca.crt);说明:这个属性是根据用户设置的文件名不同而不同的,本次实验用的是ca.crt,若下次实验用其他的文件名,需要在此配置文件中做相应的修改。serical:每一个证书在它产生时就被赋于了一个序列号(serialnumber),用这个来记录增加量。private_key:CA密文件,保存私钥(ca.key);说明:同6RANDFILE:这个文件在产生密钥时使用,值得注意的事,加密算法的一些不足会通过使用随机数而避免,使其具有更好的保密性。其他的部分将在产生公用证书时使用,例如什么样的问题将要被问,它们将被怎么来提问以及其他默认设置。后面你会注意到在这个配置文件中默认的国家是AU,你可以把它改成你的国家的代号,如US(美国)。在这一点上,要保证使每一处修改在配置文件f中都能突出显示。如果你已经做了与上面相类似的配置文件(f),将它保存在C:\CARoot目录下,这样你在CARoot目录下就有这样一个配置文件。三’、在打开配置文件时存在一些问题如果利用上面那种方法打开配置文件时存在一些问题,不是警告。则进入f所存在的那个目录进行操作,即在openssl-0.9.8e/apps目录下:C:\openssl-0.9.8e\apps>editf这样将会打开MS-DOS编辑器,你同样可以做自己的一些修改,然后另存到CARoot目录下。四、建立CAKey文件生成自己的认证机构(CA)的私钥和证书文件。这些文件将在你使用你自己的CA创建其他的认证签名时使用。进入CARoot目录,输入opensslgenrsa-outprivate\ca.key-randprivate\.rnd2048上面的语句将产生一个RSA私钥文件,它就是CA私钥文件并且将被用来产生公共的证书。如果输入此语句后提示“目录错误(badcommand)”,则说明你没有在坏境变量中加入C:\openssl-0.9.8e\out32dll\release,这个是经过Visualc++编译后生成的Openssl库文件所在的目录。如果一切都运行正确,则会看到与如下类似的画面:说明:这个“经过Visualc++编译”的编译文件是通过下载一个叫做Msvc097.rar的文件,解压后即可以看到有个openssl.dsw的工作单元文件,用c++编译后即可。/forum/read.php?fid=11&tid=301&fpage=1,这个是下载网页,针对openssl-0.9.8e/f版本的,在0.9.8的版本上,效果不对。但是本次实现偶尔也没有产生预期的release文件夹,研究中。如果想对所生成的私钥文件加一个密码,这也是被提倡使用的,则可以执行下面的代码来代替刚才已经生成的文件。C:\CARoot>opensslgenrsa-outprivate\ca.key-randprivate\.rnd-des32048可以注意到所加的只是一个“-des3”,如果想了解genrsa这个指令的更多信息,可以执行以下指令C:\CARoot>opensslgenrsa-help你可以用这个命令来了解更多的OpenSSL指令,并且当忘记哪一个指令用法时可以方便的查找。五、为CA创建Datebase文件(index.txt)和序列文件(serial)可以在配置文件(f)中知道database文件的位置,它指向了一个文件名为(index.txt)的文件。这个文件是由一行行的被CA签名的证书入口组成的。建立这个index文件,需要在C:\CARoot目录下输入:touch.\index.txt即:C:\CARoot>touch.\index.txt注:Touch是一个程序,用来用当前的系统时间来设置文件的时间戳。如果当前没有touch.exe文件或类似的文件,不用担心,只需手工在CARoot目录下创建一个名为index.txt的文本文件即可。现在,你必须创建一个序列文件(serial).这个文件可以通过下面的方式被创建:打开MS-DOS窗口,输入语句echo01>serial即:C:\CARoot>echo01>serial通过这个命令,可以在CARoot目录下创建文件serial,可能使用计事本或editplus将其打开,打开后会发现它只有一行文字是:01,它将永远不会被引用。OpenSSL文件将使用两次不会被引用的“01”。所以,它在Windows系统中并不起什么作用。应该保证在使用中不对“01”进行引用。总结一下:现在在CARoot目录下有两个新的文件分别为serial和index.txt。注意这两个文件均在配置文件(f)中被声明过,分别是:database项(使用index.txt)和serial项(使用serial文件)。保证这两个文件在C:/CARoot目录下,而不是它的子目录下。六、建立一个CA证书通过这一部分,你可以成功地建立一个CA证书。首先要确保你已经把环境变量PATH中加入了C:\openssl-0.9.8e\out32dll\release目录(这个目录是在openssl.dsw中编译时生成的)。进入MS-DOS窗口(或双击CARoot目录下的cmd.exe文件),输入如下的语句:C:\CARoot>opensslreq-new-x509-days3650-keyprivate\ca.key-outprivate\ca.crt-configf显示如下:通过上面的显示可以看出,我们被提出了一系列的问题。当你创建你自己的证书时应该有一个给这个证书签名的最长期限,比如10年(36500天),这是作为CA信息应该知道的。注意到一个问题是与配置文件(f)有关的。同样可以注意执行完这个命令后到,没有什么文件被添加到其他的目录如newcerts目录中。记住,跟上面一样,当使用req.exe可执行文件时,创建的是一个自签名证书!一个自签名证书是一个虚拟的证书,并且是没有被认证中心(CA)认证签名的。如果你进行任何的客户端或者是服务器端的认证,它都将会返因一个错误代码(18),这个代码表示是自签名认证。对于认证中心(CA)的认证,他们都是自签名认证,因为他们是最高级别的;然而,当你创建其他证书时,你将要用你自己的认证中心(CA)的信息对这些证书进行签名。下面就是显示了一个自签名认证中心的CA认证用Wordpad打开时的样子。这是自签名证书非常标准的书写格式,简单到所有的信息代码都放在了BEGINCERTIFICATE和ENDCERTIFICATE中间。通过这一步你已经成功地创建了自己的认证中心(CA)的公开认证签名,并建立了自己的认证中心(CA)的私钥文件,这两个文件都会被保存在C:\CARoot\private目录中。七、创建一个新的公开认证签名和密钥对通过这一步,你将有一个非常基本的认证中心(CA)架构,除此以外,你还可以利用你的机构对它们进行认证和签名。下面的内容将引导你创建一个密钥对:用genrsa.exe命令创建一个新的密钥文件:C:\CARoot>opensslgenrsa-outcert.key-randprivate\.rnd2048用genrsa.exe命令创建一个带有密码的密钥文件:C:\CARoot>opensslgenrsa-outcert.key-randprivate\.rnd-des32048如果一切都正常,将会看到与上面类似的画面。使用一个密码来加密服务器上的密钥文件是被高度提倡的。然而,对于客户端的文件来使用一个密码来进行加密是没有必要的。如果你忘记了自己的密码,你将不得不重新申请一个认证签名。注:输入的密码是不在上面显示的,所以只需要保证两次输入的一致就可。如下图所示使用req.exe命令来建立一个公开认证签名:C:\CARoot>opensslreq-new-x509-days3650-keycert.key-outcert.crt-configf如果一切运行正常,将会看到类似上面的显示。注意这些问题的提问格式以及如何与先前修改的f文件相匹配的。你可以在任何时候找开这个配置文件(f)来改变它的默认设置。通过这一步,你就在CARoot目录下拥有了一个cert.key和一个cert.crt文件。如果这些文件不存在,重新检查一下自己所做的工作并且进行再次尝试。应该知道这个新的cert.crt文件并没有被签名并且跟认证中心(CA)的证书非常类似。下一步就是使用认证中心(CA)的密钥文件对其进行签名。用下面的指令对证书进行认证签名:C:\CARoot>opensslca-ss_certcert.crt-keyprivate\ca.key-configf-policypolicy_anything-outsignedcert.crt注意:不要使用cert.key(在上步刚刚生成的密钥),因为它是刚刚产生的,是用它来产生一个公开密钥,并不是对密钥进行认证签名的。所以必须使用认证中心(CA)的密钥文件(早一些时间产生出来的)来建立这个认证链。在上面,一般情况下要-policypolicy_anything指令来接受这个认证,因为这是在ca.exe命令中普便存在的。你一旦对证书进行了认证签名,它将被保存在C:\CARoot\newcerts目录下作为使用序列号的事务交易的一个记录,并且一个扩展名为.pem的文件被创建,如01.pem。对于每个新的认证签名证书,你的newcerts目录将被更新,对每一个新的证书都增加记录(indexnumber)。另一个位置是在C:\CARoot目录下增加一个signedcert.crt文件,它是在-out参数下指定的。在你的OpenSSL应用程序中需用用这个文件和cert.key文件。注意:你可能需要删除index.txt文件,如果你想重新创建或重新签名认证一个证书。你也需要改变serial文件中的一些连续的数字。执行上面的语句后将会看到MS-DOS窗口中出现很多文字。并且你会被问你是否想要对证书进行签名。只需要按“Y”并且按回车键。你还将会被问是否想提交这个文件,也是按“Y”并且按回车键。然后,又会看到一些信息显示出来并且最后以“databaseupdated”结束。上面的窗口显示了标准地认证过程。如果没有看到与上面类似的东西,则重复上面这些步骤来确认一下是否严格按照例子来执行了。在newcerts目录下会看到一个与名01.pem类似的新的证书。如果打开这个文件,会看到如下类似的内容:Certificate:Data:Version:3(0x2)SerialNumber:1(0x1)SignatureAlgorithm:md5WithRSAEncryptionIssuer:C=CH,ST=GuiZhou,L=GuiYang,O=JLS,OU=JLS,CN=YFY/emailAddress=yuanfeiyan198310@ValidityNotBefore:May704:51:342007GMTNotAfter:May604:51:342008GMTSubject:C=CH,ST=GuiZhou,L=GuiYang,O=JLS,OU=JLS,CN=YFY/emailAddress=yuanfeiyan198310@SubjectPublicKeyInfo:PublicKeyAlgorithm:rsaEncryptionRSAPublicKey:(2048bit)Modulus(2048bit):00:ad:a5:61:be:fb:eb:06:a4:fa:52:7d:44:4c:28:37:07:0e:2b:a2:3d:fc:69:19:c0:4f:b4:cf:24:51:f1:68:5a:c4:d4:0b:b4:cd:60:75:8a:8f:5c:66:0e:72:73:d6:96:0f:b4:30:4a:f9:e9:26:24:c9:a9:f2:d3:5a:9b:be:a3:2d:d9:0f:72:39:3b:86:7b:35:50:af:6a:58:1f:a1:4f:92:01:74:34:20:71:d2:d4:fc:ba:7f:38:80:86:40:af:b1:80:36:e1:7c:37:3e:63:44:cc:7d:f2:78:ab:99:90:d1:5d:74:fd:b1:68:96:0a:f0:86:8e:ee:e9:4b:15:1a:82:1d:ff:c9:e4:c6:53:bc:ee:00:a7:16:a2:5a:25:7b:39:6a:7e:46:ff:5f:07:bf:67:26:a3:19:ac:dd:60:7c:80:7f:34:c8:d0:0f:85:9d:6b:24:b9:3e:e4:40:72:54:71:d8:5d:0c:60:29:ad:32:4c:f8:b8:85:c2:58:b1:d5:ee:4b:a4:20:00:3a:5e:75:e3:aa:44:76:5e:4d:08:b4:5f:8b:78:84:d0:8b:de:94:0d:50:19:66:a5:23:02:a8:fe:4a:54:00:c4:c6:e3:ba:4f:fe:b8:1f:fa:0e:64:25:9a:14:df:f4:d7:3c:26:ed:41:fa:a1:1d:65:69:b1:61Exponent:65537(0x10001)X509v3extensions:X509v3BasicConstraints:CA:FALSENetscapeComment:OpenSSLGeneratedCertificateX509v3SubjectKeyIdentifier:F6:E1:65:70:30:B0:EC:BF:7D:7E:AA:B2:3A:48:8D:41:67:55:79:C7X509v3AuthorityKeyIdentifier:keyid:26:D7:89:CD:5E:AB:8C:89:5F:4F:A3:3B:CC:E9:EC:A4:2A:0B:B4:5CDirName:/C=CH/ST=GuiZhou/L=GuiYang/O=JLS/OU=JLS/CN=YFY/emailAddress=yuanfeiyan198310@serial:E5:C1:B1:9F:57:DA:BB:74SignatureAlgorithm:md5WithRSAEncryption97:7d:6c:1e:7d:50:70:da:ff:82:f7:fe:7c:45:84:aa:ae:f9:1b:66:31:24:f9:c1:a9:9e:ee:51:cb:72:3c:1f:b2:c9:b8:1e:e3:2b:4f:4f:09:a6:a1:e0:b2:b0:5c:aa:c4:cc:f1:1e:d7:6e:6a:54:6b:e3:a1:c3:a9:41:23:42:9a:ba:c0:b9:24:2c:58:22:13:17:a2:9c:65:85:5f:b7:7e:74:39:16:f6:d2:cc:e5:52:0a:78:d6:42:e1:20:4d:88:25:82:5e:c4:9f:a0:45:81:80:fe:41:4a:22:95:a2:c8:32:1f:50:41:ea:ea:b8:9b:09:dc:46:2e:ec:27:45:2b:bc:85:b3:76:2a:38:2b:7e:25:97:4b:ea:4f:67:d8:7b:a5:85:47:c0:38:86:c1:a0:f2:8a:da:fe:fc:f8:28:5a:6c:1a:0c:db:48:be:e4:56:49:d7:44:40:94:d8:40:6f:92:70:04:dc:dd:63:87:c5:f1:8d:17:62:c4:7b:4e:d2:13:e6:25:72:45:ad:b4:ab:9d:e4:07:67:9c:03:74:aa:82:2c:aa:5c:85:bd:e2:d2:3c:25:d1:b3:e7:80:40:00:64:c1:bf:f2:a4:d6:41:88:6a:1b:7b:82:fd:3c:29:bd:46:25:b1:b3:cf:36:e9:5b:54:f0:51:56:31:71:67BEGINCERTIFICATEMIIEojCCA4qgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBhTELMAkGA1UEBhMCQ0gxEDAOBgNVBAgTB0d1aVpob3UxEDAOBgNVBAcTB0d1aVlhbmcxDDAKBgNVBAoTA0pMUzEMMAoGA1UECxMDSkxTMQwwCgYDVQQDEwNZRlkxKDAmBgkqhkiG9w0BCQEWGXl1YW5mZWl5YW4xOTgzMTBAc29odS5jb20wHhcNMDcwNTA3MDQ1MTM0WhcNMDgwNTA2MDQ1MTM0WjCBhTELMAkGA1UEBhMCQ0gxEDAOBgNVBAgTB0d1aVpob3UxEDAOBgNVBAcTB0d1aVlhbmcxDDAKBgNVBAoTA0pMUzEMMAoGA1UECxMDSkxTMQwwCgYDVQQDEwNZRlkxKDAmBgkqhkiG9w0BCQEWGXl1YW5mZWl5YW4xOTgzMTBAc29odS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtpWG+++sGpPpSfURMKDcHDiuiPfxpGcBPtM8kUfFoWsTUC7TNYHWKj1xmDnJz1pYPtDBK+ekmJMmp8tNam76jLdkPcjk7hns1UK9qWB+hT5IBdDQgcdLU/Lp/OICGQK+xgDbhfDc+Y0TMffJ4q5mQ0V10/bFolgrwho7u6UsVGoId/8nkxlO87gCnFqJaJXs5an5G/18Hv2cmoxms3WB8gH80yNAPhZ1rJLk+5EByVHHYXQxgKa0yTPi4hcJYsdXuS6QgADpedeOqRHZeTQi0X4t4hNCL3pQNUBlmpSMCqP5KVADExuO6T/64H/oOZCWaFN/01zwm7UH6oR1labFhAgMBAAGjggEZMIIBFTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU9uFlcDCw7L99fqqyOkiNQWdVeccwgboGA1UdIwSBsjCBr4AUJteJzV6rjIlfT6M7zOnspCoLtFyhgYukgYgwgYUxCzAJBgNVBAYTAkNIMRAwDgYDVQQIEwdHdWlaaG91MRAwDgYDVQQHEwdHdWlZYW5nMQwwCgYDVQQKEwNKTFMxDDAKBgNVBAsTA0pMUzEMMAoGA1UEAxMDWUZZMSgwJgYJKoZIhvcNAQkBFhl5dWFuZmVpeWFuMTk4MzEwQHNvaHUuY29tggkA5cGxn1fau3QwDQYJKoZIhvcNAQEEBQADggEBAJd9bB59UHDa/4L3/nxFhKqu+RtmMST5wame7lHLcjwfssm4HuMrT08JpqHgsrBcqsTM8R7XbmpUa+Ohw6lBI0KausC5JCxYIhMXopxlhV+3fnQ5FvbSzOVSCnjWQuEgTYglgl7En6BFgYD+QUoilaLIMh9QQerquJsJ3EYu7CdFK7yFs3YqOCt+JZdL6k9n2HulhUfAOIbBoPKK2v78+ChabBoM20i+5FZJ10RAlNhAb5JwBNzdY4fF8Y0XYsR7TtIT5iVyRa20q53kB2ecA3SqgiyqXIW94tI8JdGz54BAAGTBv/Kk1kGIaht7gv08Kb1GJbGzzzbpW1TwUVYxcWc=ENDCERTIFICATE如果你查看C:\CARoot目录下的(demoCA)index.txt文件,将会看到有一条来显示证书信息,为:V 080506045134Z 01 unknown /C=CH/ST=GuiZhou/L=GuiYang/O=JLS/OU=JLS/CN=YFY/emailAddress=yuanfeiyan198310@。在serial文件内也会看到“02”,它表示一个新的证书索引(其中01是最开始一个证书)。你现在就可以对新建立的这些signedcert.crt文件(已认证证书)进行分发。这些证书将在OpenSSL环境下有效并且在完全使用OpenSSL库的应用中起作用;然而,如果你想在Windows操作系统中安装这个证书,则需要做一些修改使其能够适合Windows操作系统。八、认证证书请求(SigningCertificateRequests)(作为一个认证中心)在上面的例子中,我们示范了一个自签名证书的认证过程。在这一部分我们将引导你进入关于如何得到一个证书请求并用自己的信息对其进行认证签名(Inthissectionwewillshowyouhowtotakeacertificaterequestwithyourcredentials.)。与Verisign或者Thawte类似,你需要从网络信息服务器上创建一个证书请求(request)并且把证书传递给服务器对进行签名认证然后再把签名后的证书返回去给你使用。从IIS服务器上申请一个证书在CreatingPKCS#12CertificatesinInternetInformationServer这一部分将进行讨论。你可以在MS-DOS窗口中输入下面的语句来进行证书的申请:C:\CARoot>opensslreq-newkeyrsa:1024-keyoutprivate\dummy.key-outprivate\dummy.pem-configfC:\CARoot>opensslreq-newkeyrsa:1024-keyoutprivate\oopp.key-outprivate\oopp.csr-configf注意:这只是去进行证书的申请,所以你必须要建立一个认证中心(CertificateAuthority)。这对于那些不想去做认证中心(CA)的人来说往往是很困难的。这就是为什么要在网络信息服务器(InternetInformationServer)上去创建它们了。得到证书签名请求文件(或创建签名请求文件)你就可以运行下面的语名(command)来对证书进行认证签名:C:\CARoot>opensslca-incertreq.txt-keyprivate\ca.key-outnewcerts\mycert.cer-policypolicy_anything-configf注:把上面的certreq.txt改为private\dummy.pem可以注意到它跟自签名证书的唯一的区别就是分别使用了-ss_certcert.crt和-incertreq.txt。调整(Adjusting)证书使其适应Windows操作系统(WindowsOperatingSystems)Windows系统是不能识别由OpenSSL第一次创建的扩展名为.pem的文件的,但是Windows系统可以识别扩展名为.crt的文件。当你对证书进行认证签名时你会注意到,它的内容改变了,你不仅仅像刚开始建立一个证书时那样只有BEGINCERTIFICATE和ENDCERTIFICATE所包含的内容。如果你仅仅把文件的扩展名由.pem改为.crt然后双击这个文件。Windows系统提示你一个错误。你必须删除除了包含在BEGINCERTIFICATE和ENDCERTIFICATE(与上面的自签名认证中心证书的类似)之间的数据外的其它所有的内容。完成后,鼠标右击这个新创建的signedcert.crt文件,并使用word或者editplus打开。用word或者editplus打开比用计事本(NotePad)打开要好,因为计事本将会显示出所有的额外的ASCII码,使对证书的编辑变得困难。打开这个文件后,删除掉所有的除了在BEGINCERTIFICATE和ENDCERTIFICATE之间的数据以外的所有内容,以保证BEGINCERTIFICATE所在行处在第一行并且ENDCERTIFICATE所在行处在最后一行。保存这个文件。(不用担心,你如果弄错了,你可以再重新创建一个证书并且在index.txt文件和serial文件中删除掉证书的入口即可)。你的文件现在看起来应该与ca.crt文件比较类似了。当你删除掉了开头的信息后,如果需要,可以把扩展名.pem改为.crt。你可以双击这个文件,你应该可以看到如下的注释表明你的信息还有少许的差异:你有这个安装这个证书到Windows可信任证书的证书数据库的选择权,但在这个时候并不是必须的。如果你查看其它的标签,你会注意到你这个认证证书的所有信息包括关于认证中心的发行者的信息。你还可以注意到,Windows系统并不能在这个证书上找到任何信息。我们将在下一部分安装认证中心(CA)的证书。九、安装认证中心的证书到Windows操作系统(InstallingtheCACertificateintotheWindowsOperatingSystem)对于任何签名证书,你都需要去掉头部信息并且只能保留BEGINCERTIFICATE和ENDCERTIFICATE信息比如在CreatingtheCACertificate这一部分介绍的内容。打开C:\CARoot\private目录下的ca.crt文件(用word或者editplus打开),确保它看起来像一个没有头部信息的标准的证书,只有BEGINCERTIFICATE和ENDCERTIFICATE。如果CA证书适合了Windows操作系统的.crt格式,那么你就可以双击这个证书。当一个对话框出现时,与上面的图像类似,点击安装证书(InstallCertificate)按钮:按下安装证书(InstallCertificate…)按钮后,将会看到如下的对话框:然后点击下一步(Next)即可:在上面的对话框中,我选择了“安装所有的证书在如下的位置(Placeallcertificateinthefollowingstore)”然后点击浏览(Browse…)按钮。当选择证书的存放位置的对话框弹出后,我选择了“受信任的根证书颁发机构(TrustedRootCertificateAuthorities)”目录并且点击了OK。点击下一步(Next)继续。又将会看到如下的对话框:然后点击完成(Finish)完成安装过程:点击YES继续并且安装这个证书。这样,你就已经安装这个认证中心的根证书(CARootcertificate)作为一个可信任的认证中心(atrustedCertificateAuthority)。下一步将要安装被这个认证中心认证签名的公开证书。当你再次双击ca.crt时,会发现所显示出来的信息与第一次显示的信息不同:在上面的图片中,Windows已经得到了一些信息,跟我们第一次双击CA证书时并不一样。如果你点击上面的CertificationPath标签,你将会看到看到Windows系统说这个证书路径正确。在这一步创建并且认证一个证书,然后双击这个扩展名为.crt的文件,它是刚被创建的认证证书,在C:\CARoot\newcerts目录下(你可能需要改变扩展名.pem为.crt并且去掉内部的一些其它数据,只保留开始和结束之间的内容)。如果你依照新的公开证书和密钥对(CreatingaNewPublicCertificateandKeyPair)这一部分的指导,你就可以有一个证书并且可以双击进行安装(确定已经使其适应Windows操作系统)。你将会看到下面的对话框:可以看到并没有安装这个证书。这已经是通过认证的,因为它的根证书已经被安装在Windows系统中且已经通过认证。如果你双击上面的CertificationPath标签,将会看到证书链:注意到这个最新创建并且获得认证签名的根证书是YFY(普通名称)证书。如果你双击它,你将会浏览CA证书。十、使用Web浏览器来安装证书(UsingInternetExplorertoInstalltheCertificate)另一种安装证书的方式是使用Web浏览器(InternetExplorer)进行安装。它将可以允许你安装.pem类型的文件(保证您已经改变成适合Windows解析)和其它符合PEM或x509架构的文件。打开Web浏览器,从菜单栏选择工具->Internet选项…(Tools|InternetOptions)。当你选择内容标签时,你将可以看到如下内容:当上面的对话框出现时(假设你用的是5.0版本的浏览器),点击证书(Certificates…)按钮。你应该可以得到如下的对话框:十一、证书链(CertificateChaining)从这儿你将可以看到所有可信任的根证书(TrustedRootCertificates)即CA(CertificateAuthorities)。如果这些CA中的一个已经认证签名了一个证书,并且你计算机已经认证,这个根证书将要被接受。根证书处于所有签名证书链的最上面。这些是根据证书链一个个连接在一起的,尽管这儿可以有很多CA(CertificateAuthorities),每一个会在这个证书链中安置一个位置。在这种情况下,Trizen就是根证书,我们认证的其它证书将有1的深度(从0开始),其中0位置是已经认证签名的证书(signedcertificate)并且位置1是TrizenRoot。如果你把VisualSSL或者OpenSSL用在安全应用上,你需要了解客户端认证和证书深度方面的内容。十二、导入CA证书(ImporttheCACertificate)在上面的对话框中,点击导入(import…)按钮。你将会看到如下的对话框:点击下一步(Next)按钮,将会看到如下对话框:点击浏览(Browse…)按钮并且找到要认证签名的证书,例如,你想导入C:\CARoot\private目录下的ca.crt证书,你必须选择它,并点击下一步(next)按钮继续。这个对话框中,只需按默认设置即可,并且点击下一步(Next)按钮。你将会看到如下的对话框。这一步跟你直接双击.crt文件比较类似。记住你不能双击.pem文件得到这个对话框,你可以通过Web浏览器或者改变.pem的扩展名为.crt,并且去掉文伯内的开头信息,只保留BEGINCERTIFICATE和ENDCERTIFICATE数据。十三、使用OpenSSL应用程序中的s_server.exe&s_client.exe(UsingtheOpenSSLApplicationss_server.exe&s_client.exe)无疑,你肯定想要测试你的证书。OpenSSL给你提供了丰富的应用程序,它可以在C:\openssl-0.9.8e\out32dll\release目录下找到。我们已经在上面的部分中讨论了它们中的一些应用,但是作为一个开发者,你会想使用其它的一些应用程序来测试你自己的SSL激活的应用程序。记住这些用法都是基于MS-DOS窗口的,所以把cmd.exe或者复制到C:\openssl-0.9.8e\out32dll\release目录下是被提倡的。运行s_client.exe和s_server.exe(Runnings_client.exeands_server.exe)我们可以肯定在你的SSL发展的生命周期中一定会使用到s_server.exe。这是一个很大的应用,因为它将测试你的客户机程序的性能并且确定你可以链接一切正常。如果你的客户机程序可以与s_server.exe取得链接你就可以很确定它可以与其它的SSL激活的服务准确正常的工作,包括和其它的SSL激活的服务。在C:\openssl-0.9.8e\out32dll目录下新建release文件夹把cmd.exe或者复制到C:\openssl-0.9.8e\out32dll\release目录下从C:\openssl-0.9.8e\apps目录中复制server.pem和client.pem文件到C:\openssl-0.9.8e\out32dll\release目录。双击在release目录下的cmd.exe或者。当MS-DOS窗口打开后,输入如下的语句:C:\openssl-0.9.8e\out32dll\release>openssls_server-accept4433这个s_server.exe程序已经准备去接受客户机程序。这时,通过两次点击Ctrl+C退出这个应用程序来停止这个服务。再输入如下的内容并按回车键:C:\openssl-0.9.8e\out32dll\release>openssls_server-help这个命令会显示在s_server.exe应用程序中使用的所有的选项。如果你不使用任保选项(option),这个服务会使用server.pem作为证书在4433端口来接受(accept),当然这个证书也包含一个私钥。注意到你在你使用OpenSSL时你可以把私钥入在同一们文件中作为公开证书(NotethatyoucanplacetheprivatekeyintothesamefileasthepubliccertificatewhenusingOpenSSL)。如果你不能停止s_server.exe应用程序的完成,就按住CTRL键,连按字母C两次。这时再复制CARoot\private目录下的ca.key和ca.crt文件到release目录。打开MS-DOS窗口,输入:C:\openssl-0.9.8e\out32dll\release>openssls_server-certca.crt-keyca.key这样将会使用先前创建的CA公开证书(CAPublicCertificate)和CA私钥文件来启动(start)这个s_server应用程序。如果它需要PEM密码,就输入你在创建CA密钥时输入的密码即可。这时,让s_server.exe继续运行,并且双击cmd.exe或者文件打开一个新的MS-DOS窗口,在这个DOS窗口中输入如下语句:C:\openssl-0.9.8e\out32dll\release>openssls_client-certca.crt-keyca.key将会看到如下的输出:如果没有看到上面类似的输出,应该查看一下是否把ca.crt和ca.key文件放到了s_client.exe应用程序所在的目录(C:\openssl0.9.7e\out32dll\release)。当然你可能需要加入语句-connect:4433,它将把s_server.exe应用程序的主机IP和端口与描述出来。注意到最后一行:Verifyreturncode:18(selfsignedcertificate)。这个s_client.exe应用程序将会自动试图检验这个服务器的证书,而s_server.exe应用程序使用的CA证书是自认证签名的,这是很有意义的。这时就可以关掉你的s_client.exe应用程序,然后再关闭s_server.exe应用程序。这时s_server命令所在窗口的输出为:复制上一些时间创建的已经认证签名的证书signedcert.crt,或者01.pem文件(或者其它在C:\CARoot目录下的其它文件)到C:\openssl-0.9.8e\out32dll\release目录。复制cert.key,它是在创建请求证书(createtherequestcertificate)时使用的,晚一些时候进行认证签名的。这是一个公开密钥对(实际上这儿有三个,一个公开认证证书,一个请求证书和一个密钥文件)。输入如下语句:C:\openssl-0.9.8e\out32dll\release>openssls_server-certsignedcert.crt-keycert.key你的服务应该是开启并且运行了,再打开另一个MS-DOS窗口,输入下面的语句:C:\openssl-0.9.8e\out32dll\release>openssls_client-certsignedcert.crt-keycert.key如果一切运行正常,你将会看到另一个认证错误。在最后你并没有看到表示自签名认证的错误代码“18”,而是“21”或者其它什么。这个错误表示不能确定服务器端的证书是使用一个可信任的证书库进行认证的(就像上面的在Windows系统中安装证书时创建)。这里的每一件事都跟客户机程序的认证过程有关。基本上来说,我们需要告知s_client.exe应用程序,它需要在文件里找这些它应该信任的这些证书。这个可以通过使用-CAFile来达到目的。停止运行s_client.exe应用程序,而让s_server.exe应用程序保持运行。十三、创建CAfile(CreatingaCAfile)一个CAFile文件创建起来比较简单,它由一些相互关联的公开证书组成。创建一个CAFile,从我的电脑中进入C:\openssl-0.9.8e\out32dll\release目录,在空白处点右键,新建->文本文档,这样会新建一个文本文档,可以把这个文件的名字改为root.pem。这样,你的release目录将会如下所示:用editplus或者word文档来打开root.pem文档。你可以看到一个空白文档。然后用同样的方法打开signedcert.crt文件并且选择所有的内容,并把它复制到root.pem文件中。保存后退出。这样你就成功地创建了CAfile。如果你还没有关闭s_client.exe。这时你可以把它关闭掉了。然后再输入如下语句:C:\openssl-0.9.8e\out32dll\release>openssls_client-certsignedcert.crt-keycert.key-CAfileroot.pem结果为:如果一切运行正常,你会看到这样的错误!“Unabletoverifythefirstcertificate”不是你所要期昐的,但是我们只是复制了这个获得认证签名的证书,我们还必须复制这个CA证书(ca.crt)。关闭掉s_client.exe应用程序并且复制ca.crt证书内部的数据到root.pem文件内容的下面,复制的方法可以跟复制signedcert.crt文件的内容类似,复制完成后保存退出。这时root.pem文件应该看起来与下面的内容类似:BEGINCERTIFICATEMIIEkzCCA3ugAwIBAgIBATANBgkqhkiG9w0BAQQFADCBhTELMAkGA1UEBhMCQ0gxEDAOBgNVBAgTB0d1aVpob3UxEDAOBgNVBAcTB0d1aVlhbmcxDDAKBgNVBAoTA0pMUzEMMAoGA1UECxMDSkxTMQwwCgYDVQQDEwNZRlkxKDAmBgkqhkiG9w0BCQEWGXl1YW5mZWl5YW4xOTgzMTBAc29odS5jb20wHhcNMDcwNTA3MDU1MDEzWhcNMDgwNTA2MDU1MDEzWjB3MQswCQYDVQQGEwJDSDERMA8GA1UECBMIU2hhbkRvbmcxDjAMBgNVBAcTBUxpbllpMQwwCgYDVQQKEwM1MDQxDDAKBgNVBAsTAzUwNDEMMAoGA1UEAxMDRk1NMRswGQYJKoZIhvcNAQkBFgxmbW1Ac2luYS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8rQWPSmi2JAwyQ+3VBNUAI0NmXw+oxlEXPsApki5ztQUhjLtCOv0C+B4o2NscmgemEd3wRBc1k4SiqfnKHLB+1pZl5rxM3ntskvw3sZRz2CCqI6wsg7BLPKbLPMBBMQpWobpC8vneZJlrWC1wKWoMb1bWKhCQ3AIjS3P+zT0WF76Z8ww9UESDbAyhIqw/IsYJsJhoasGJnOtGWmkubdyPIZ9DZFAFw96woXEMK5ZNL7VkYhwdDpxxdR/rvzXnBEX/FRTvQFA6oYtmf+BmmRlzSlxjZmtvjsOLT5EPoggg5O6PYf38hAIyDFSj8vNG07maxIY0S0MXcptn5qQUsjPBAgMBAAGjggEZMIIBFTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQURjrBtQF0lVlZ4BgxKjh6datkbBUwgboGA1UdIwSBsjCBr4AUW7/yqoR/QCIgnLMAPyxVZkOzZV6hgYukgYgwgYUxCzAJBgNVBAYTAkNIMRAwDgYDVQQIEwdHdWlaaG91MRAwDgYDVQQHEwdHdWlZYW5nMQwwCgYDVQQKEwNKTFMxDDAKBgNVBAsTA0pMUzEMMAoGA1UEAxMDWUZZMSgwJgYJKoZIhvcNAQkBFhl5dWFuZmVpeWFuMTk4MzEwQHNvaHUuY29tg
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB32/T 5258-2025感染防控机器人系统通用技术要求
- 供应商培训组织流程SOP-含培训计划和效果评估
- 口腔医疗机构2027年度经营计划书
- 圆函数期中试题及详细答案
- T/CASME 1840-2024新能源汽车扁线电机定子智能生产技术要求
- 《永恒瞬间》教学设计-2026-2027学年鲁教版(五四学制)(新教材)初中美术七年级上册
- 包装服务公司财务经理述职报告
- 2026年部编版新教材语文八年级上册第一单元检测题(有答案)
- 2026年秋招:东方雨虹试题及答案
- 山东潍坊市2025-2026学年高一下学期期末学业质量评价政治试题(含答案)
- DBJ∕T 13-533-2026 既有边坡工程鉴定与加固技术标准
- 中国干燥综合征诊疗指南(2025版)
- 2026年初级通信工程师专业实务真题及答案(考后更新)
- 钢楼梯施工方案模板(3篇)
- 建设工程施工合同法律培训
- 天宫殿街道养老服务中心与社区居家养老服务站运营方案
- 加油站油气回收系统安装监管
- 公路安全设施劳务合同
- 服务方案-某消防救援大队车辆定点维修服务项目
- 初中数学:七八九年级全六册知识点总结(冀教版)
- 《无人机培训教材》课件
评论
0/150
提交评论