其包含的内容中最重要的部分如下:
1、 dir: “.”表示(openssl.cnf)这个配置文件被存储的当前目录。因为我们已经为要建立的认证建立了个目录CARoot,所以需把dir的目录:./demoCA改为:“.”,使用所建立的文件目录。说明:根据用户设定的路径更改此路径 2、 certs:已经发布或者请求的认证存放的位置。
3、 crl_dir:保存撤回即销毁的证书列表,这些证书将不需要再被接受,即不可再被使用。
4、 database:一个文本(index.txt)文件,用来保存已发行证书的编号信息。 5、 new_certs_dir:用来保存签名证书。如果按1中已经改的目录,则这个目录就是:C:\\CARoot\\newcerts
6、 certificate:这个CA签名来源于CA密钥文件(ca.crt);说明:这个属性是根据用户设置的文件名不同而不同的,本次实验用的是ca.crt,若下次实验用其他的文件名,需要在此配置文件中做相应的修改。
7、 serical:每一个证书在它产生时就被赋于了一个序列号(serial number),用这个来记录增加量。
8、 private_key:CA密文件,保存私钥(ca.key);说明:同6
9、 RANDFILE:这个文件在产生密钥时使用,值得注意的事,加密算法的一些不足会通过使用随机数而避免,使其具有更好的保密性。
其他的部分将在产生公用证书时使用,例如什么样的问题将要被问,它们将被怎么来提问以及其他默认设置。后面你会注意到在这个配置文件中默认的国家是
AU,你可以把它改成你的国家的代号,如US(美国)。在这一点上,要保证使每一处修改在配置文件openssl.cnf中都能突出显示。
如果你已经做了与上面相类似的配置文件(openssl.cnf),将它保存在C:\\CARoot目录下,这样你在CARoot目录下就有这样一个配置文件。
四、在打开配置文件时存在一些问题
如果利用上面那种方法打开配置文件时存在一些问题,不是警告。则进入openssl.cnf所存在的那个目录进行操作,即在openssl-0.9.7e/apps目录下: C:\\openssl-0.9.7e\\apps>edit openssl.cnf
这样将会打开MS-DOS编辑器,你同样可以做自己的一些修改,然后另存到CARoot目录下。
五、为CA创建Datebase文件(index.txt)和序列文件(serial) 可以在配置文件(openssl.cnf)中知道database文件的位置,它指向了一个文件名为(index.txt)的文件。这个文件是由一行行的被CA签名的证书入口组成的。建立这个index文件,需要在C:\\CARoot目录下输入:touch .\\index.txt 即:C:\\CARoot>touch .\\index.txt
注:Touch是一个程序,用来用当前的系统时间来设置文件的时间戳。如果当前没有touch.exe文件或类似的文件,不用担心,只需手工在CARoot目录下创建一个名为index.txt的文本文件即可。
现在,你必须创建一个序列文件(serial).这个文件可以通过下面的方式被创建:
打开MS-DOS窗口,输入语句echo 01>serial 即:C:\\CARoot>echo 01>serial
通过这个命令,可以在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:\\CARoot> openssl req –new –x509 –days 3650 –key private\\ca.key –out private\\ca.crt –config openssl.cnf 显示如下:
通过上面的显示可以看出,我们被提出了一系列的问题。当你创建你自己的证书时应该有一个给这个证书签名的最长期限,比如10年(36500天),这是作为CA信息应该知道的。注意到一个问题是与配置文件(openssl.cnf)有关的。同样可以注意执行完这个命令后到,没有什么文件被添加到其他的目录如
newcerts目录中。记住,跟上面一样,当使用req.exe可执行文件时,创建的是一个自签名证书!一个自签名证书是一个虚拟的证书,并且是没有被认证中心(CA)认证签名的。如果你进行任何的客户端或者是服务器端的认证,它都将会返因一个错误代码(18),这个代码表示是自签名认证。对于认证中心(CA)的认证,他们都是自签名认证,因为他们是最高级别的;然而,当你创建其他证书时,你将要用你自己的认证中心(CA)的信息对这些证书进行签名。下面就是显示了一个自签名认证中心的CA认证用Wordpad打开时的样子。
这是自签名证书非常标准的书写格式,简单到所有的信息代码都放在了BEGIN CERTIFICATE和END CERTIFICATE中间。通过这一步你已经成功地创建了自己的认证中心(CA)的公开认证签名,并建立了自己的认证中心(CA)的私钥文件,这两个文件都会被保存在C:\\CARoot\\private 目录中。
七、创建一个新的公开认证签名和密钥对
通过这一步,你将有一个非常基本的认证中心(CA)架构,除此以外,你还可以利用你的机构对它们进行认证和签名。下面的内容将引导你创建一个密钥对:
1) 用genrsa.exe命令创建一个新的密钥文件:
C:\\CARoot> openssl genrsa –out cert.key –rand private\\.rnd 2048
2) 用genrsa.exe命令创建一个带有密码的密钥文件:
C:\\CARoot> openssl genrsa –out cert.key –rand private\\.rnd –des3 2048
如果一切都正常,将会看到与上面类似的画面。使用一个密码来加密服务器上的密钥文件是被高度提倡的。然而,对于客户端的文件来使用一个密码来进行加密是没有必要的。如果你忘记了自己的密码,你将不得不重新申请一个认证签名。 注:输入的密码是不在上面显示的,所以只需要保证两次输入的一致就可。 3) 如下图所示使用req.exe命令来建立一个公开认证签名:
如果一切运行正常,将会看到类似上面的显示。注意这些问题的提问格式以及如何与先前修改的openssl.cnf文件相匹配的。你可以在任何时候找开这个配置文件(openssl.cnf)来改变它的默认设置。通过这一步,你就在CARoot目录下拥有了一个cert.key和一个cert.crt文件。如果这些文件不存在,重新检查一下自己所做的工作并且进行再次尝试。应该知道这个新的cert.crt文件并没有被签名并且跟认证中心(CA)的证书非常类似。下一步就是使用认证中心(CA)的密钥文件对其进行签名。
4) 用下面的指令对证书进行认证签名:
C:\\CARoot>openssl ca –ss_cert cert.crt –key private\\ca.key –config openssl.cnf –policy policy_anything –out signedcert.crt