1.首先要生成服务器端的私钥(key文件):
openssl genrsa -des3 -out server.key 1024
运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法),以后每当需读取此文件,输入密码后还要确认一下,输两遍。

去除key文件口令的命令:
openssl rsa -in server.key -out server.key

2.openssl req -new -key server.key -out server.csr -config openssl.cnf
生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.
这个地方有可能会报错。

这个错误就是说openssl.cnf文件找不到。那这个文件在哪里呢?这是openssl的配置文件,在apps目录下,例如我的就是D:\openssl-0.9.8x\apps里面。找到它。复制,粘贴到out32dll这个文件夹里面去!!~~

好了,重新把这个命令运行一下,ok了,屏幕会提示一步一步输入个人信息。例如国家啊省啊城市啊单位啊个人名字啊邮件地址啊之类的。

3.对客户端也作同样的命令生成key及csr文件:
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr -config openssl.cnf

4.CSR文件必须有CA的签名才可形成证书.可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做CA呢.
openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf


5.用生成的CA的证书为刚才生成的server.csr,client.csr文件签名:
Openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
Openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

这里又可能出错:

I am unable to access the ./demoCA/newcerts directory~~~
先声明下,这个demoCA文件夹是在apps这个文件夹的目录下。
搜了google很多天,网上广为流传的一种方法是:
for linux:

mkdir demoCA 

mkdir demoCA/newcerts 

mkdir demoCA/private 

touch demoCA/index.txt 

echo "01" >> demoCA/serial



for windows:照着上面那个命令自己手动建嘛···
但是为啥俺都建了,还是有这个错误呢???

仍然unable to access the ./demoCA/newcerts directory~~~

网上流传着还有一个做法:
是在apps文件夹中有个CA.pl文件然后 perl CA.pl -newca 一下,我试了,没什么反映!囧

我把demoCA这个文件夹从apps下面拷到out32dll下面,也没用。



解决办法:


修改openssl的配置文件openssl.cnf:


首先程序-附件-打开notepad,把openssl.cnf拖进去,就可以查看这个文件了。


修改这个地方:

[ CA_default ] 


dir        =\\demoCA        # Where everything is kept——————>这个地方修改目录为你的demoCA文件夹所在的地方,填入路径。比如我的就是:D:\\openssl-0.9.8x\\demoCA(注意路径要用双斜杠\\或者单反斜杠/) 

certs        = $dir\\certs        # Where the issued certs are kept 

crl_dir        = $dir\\crl        # Where the issued crl are kept 

database    = $dir\\index.txt    # database index file. 

#unique_subject    = no            # Set to 'no' to allow creation of 

# several ctificates with same subject. 

new_certs_dir    = $dir\\newcerts        # default place for new certs. 


certificate    = $dir\\cacert.pem     # The CA certificate 

serial        = $dir\\serial         # The current serial number 

crlnumber    = $dir\\crlnumber    # the current crl number 

# must be commented out to leave a V1 CRL 

crl        = $dir\\crl.pem         # The current CRL 

private_key    = $dir\\private\\cakey.pem# The private key 

RANDFILE    = $dir\\private\\.rand    #




最后查看out32dll这个文件,要用的文件就都在里面了。


openssl 多证书pem文件 使用openssl生成证书_dll



完成!!!!!!!!!!!