Rusty's code
@Dying in the rain.

最近要搭建strongswan环境,需要用到openssl来创建证书,着实费了一番功夫,总结一下。

一、环境:Ubuntu10.10

       所有文件生成在当前目录。所有用到的文件在当前目录(除非迫不得已,比如index.txt和serial)。

二、分三步走

1、Generating a CA certificate生成CA证书(供大家用的,详解见第三步)

命令:

openssl req -x509 -days 1460 -newkey rsa:2048 -keyout strongswanKey.pem -out strongswanCert.pem

creates a 2048 bit RSA private key strongswanKey.pem and a self-signed CA certificate strongswanCert.pem with a validity of 4 years (1460 days).

生成一个Key,一个Cert,都是pem文件,要生成二进制DER格式的文件要用别的选项。

这一步问题不大。具体选项看README

2、Generating a host or user certificate生成自己的证书(每个人生成自己的)

命令:

openssl req -newkey rsa:1024 -keyout hostKey.pem -out hostReq.pem

generates a 1024 bit RSA private key hostKey.pem and a certificate request hostReq.pem which has to be signed by the CA.

这一步要和第一步中填的“组织名”等必须相同,建议除姓名邮箱这些之外,全和第一步一样(密码当然不用)。

只生成一个Key。

这一步问题也不大。

3、Now the certificate request can be signed by the CA with the command用第一步生成的CA证书加密第二步生成的证书

第一步生成的证书是供大家用的(大家用同一个),第二部生成的每个人单独生成一个。

这里问题就大了。先看README给出的命令:

openssl ca -in hostReq.pem -days 730 -out hostCert.pem -notext

问题是:openssl生成的每一个文件(如hostCert.pem、index.txt、serial等)以及需要的每一个文件(如hostReq.pem),默认都要在某几个文件夹下。它会去当前路径的那些文件夹里面找。但是那些文件夹是不存在的(它安装的时候不会建,也不会提示你都有哪些,你只能一个一个试,试到吐血。。。),而且它找不到也不会自己去建,即使加了sudo也不会。因此最简单的方法就是指定文件路径,实在不能指定了再去建。

总结命令如下:openssl ca -in ./hostReq.pem -days 730 -keyfile ./strongswanKey.pem -cert ./strongswanCert.pem -out hostCert.pem -outdir ./ -notext

要求:必须在当前目录下新建一个demoCA文件夹,其中新建一个空的index.txt(必须为空,每次执行前都要提前清空,最好:rm后touch一个)和一个serial文件,serial文件中放个数字(最好别是0,最好以0开头,比如01)。建议这两个文件的操作都在终端下进行,因为操作过程中有几次直接双击打开编辑openssl运行失败。

原因是openssl命令选项中没有指定index.txt和serial路径的选项。。。

index.txt就是记录数据库。serial就是读取其中的那个数字,生成个以这个数字为名字的pem文件,且数字每次自增1。

三、实在有够吐血。吐血。。吐血。。。

posted on 2011-03-31 20:08  Rusty's code  阅读(12057)  评论(0编辑  收藏  举报