为未来的电子商务网站打基础,我要学习如何使用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,好了!