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这个文件,要用的文件就都在里面了。
完成!!!!!!!!!!!