欢迎莅临阿Q的项目

专业WP商业设计开发销售中心

用OpenSSL制作证书

为未来的电子商务网站打基础,我要学习如何使用SSL来创建安全的站点,一开始是在Windows下做实验,虽然可以获得成功,但是总觉得OpenSSL就是在linux上开发的,于是用虚拟机在CentOS上做,发现方便多了。

Linux篇

1、准备工作
先建立一个目录来存放证书,并生成空的index.txt和内容为01的serial两个文件:

cd /home
mkdir ca
cd ca
touch index.txt
echo '01' > serial

然后还要准备一个openssl.cnf的配置文件到该目录,并且修改一些地方,比如:

[ CA_default ]
dir = /home/ca

[ req_distinguished_name ]
countryName_default = CN
stateOrProvinceName_default = HUBEI
localityName_default = WUHAN
0.organizationName_default = QQWORLD.ORG
organizationalUnitName_default = QQWORLD.ORG
emailAddress_default = admin@qqworld.org
organizationalUnitName_default = QQWORLD.ORG
commonName_default = www.qqworld.org
name_default = QQWORLD.ORG

可能还需要删除,除非你知道如何正确的填写MODULE_PATH

[ pkcs11_section ]
engine_id = pkcs11
dynamic_path = /usr/lib/engines/engine_pkcs11.so
MODULE_PATH = $ENV::PKCS11_MODULE_PATH
PIN = 0711
init = 0

2、生成服务端证书
首先要生成服务器端的私钥(key文件):

openssl genrsa -des3 -out server.key 1024

运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施!
去除key文件口令的命令:

openssl rsa -in server.key -out server.key

生成Certificate Signing Request(CSR)

openssl req -new -key server.key -out server.csr -config openssl.cnf

生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可.

3、制作客户端证书

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 -days 365 -keyout ca.key -out ca.crt -config openssl.cnf

用生成的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

5、现在我们所需的全部文件便生成了
client使用的文件有:ca.crt,client.crt,client.key
server使用的文件有:ca.crt,server.crt,server.key

.crt文件和.key可以合到一个文件里面:

copy /b /y server.key+server.crt server.pem
如果喜欢本文,请分享给朋友们