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

以下是我的学习心得:

Windows篇

操作环境是Win8 VL 专业版

1、准备工作
下载并安装OpenVPN到d:\program files\openvpn\,这是一个虚拟个人网络制作工具,他能完美的在win(linux,BSD也行)下制作根、服务器、客户端证书。

安装完毕后,进到openvpn的easy-rsa目录:

复制vars.bat.sample为vars.bat,打开vars.bat文件,修改其中的

set HOME=D:\Program Files\OpenVPN\easy-rsa
set KEY_COUNTRY=CN
set KEY_PROVINCE=HUBEI
set KEY_CITY=WUHAN
set KEY_ORG=QQWorld
set KEY_EMAIL=admin@qqworld.org
set KEY_CN=project.com.cn
set KEY_NAME=QQWorld
set KEY_OU=QQWorld
set PKCS11_MODULE_PATH=QQWorld

这几个参数,免的后面制证时反复输入麻烦。保存退出。
复制easy-rsa下的openssl-1.0.0.cnf为openssl.cnf,将其剪切到c:\openssl\ssl\openssl.cnf

2、建立CA根证书
使用命令提示符:开始-程序-附件-命令提示符,进到openvpn的easy-rsa目录:

cd /d d:\program files\openvpn\easy-rsa
vars
clean-all
#以上两个是准备工作
build-ca

3、制作服务器证书

build-key-server server

注意这里的Common Name (eg, your name or your server's hostname) []:
这个才是真正的关键。这里应该输入服务器的域名比如www.xxx.com。
如果没有域名,就应该填ip,与httpd.conf和ssl.conf里的设置对应,
ServerName 10.10.10.10:80(httpd.conf)
ServerName 10.10.10.10:443 (ssl.conf)

接下来看到
a challenge password []: 填不填随便,我不填
an optional company name []: 填不填随便,我不填
sign the certificate? [y/n] 敲y回车。用CA根证书对服务器证书签字认证。
1 out 1 certificate requests certified,commit? [y/n] 敲y回车,确认。

4、制作客户端证书
build-key client1
a challenge password []: 填不填随便,我不填
an optional company name []: 填不填随便,我不填

sign the certificate? [y/n] 敲y回车。用CA根证书对客户端证书签字认证。
1 out 1 certificate requests certified,commit? [y/n] 敲y回车,确认。

好了,建好了在keys目录下的client1.crt(客户端证书)和client1.key(私钥)
crt的客户端证书是不能使用的,必须把它转化为.pfx格式的文件!!

所以,还是在命令提示符下,输入
openssl 回车
看到openssl>
再输入

pkcs12 -export –in keys/client1.crt -inkey keys/client1.key -out keys/client1.pfx

回车,

如果上步出错则使用该语句:

pkcs12 -export -clcerts -in keys/client1.crt -inkey keys/client1.key -out keys/client1.pfx

看到Enter export password: 会要求你建立客户端证书的输出密码,我填hehe,
verifying-Enter export password再确认一遍hehe,好了!

喜欢这篇文章吗,不妨分享给朋友们吧!