为了对SSL协议有大致的了解,我们可以通过openssl命令来建立一个SSL测试环境。
1) 建立自己的CA
在openssl安装目录的misc目录下(或者在apps目录下),运行脚本:./CA.sh -newca(Windows环境下运行:perl ca.pl –newca),出现提示符时,直接回车。 运行完毕后会生成一个demonCA的目录,里面包含了ca证书及其私钥。
2) 生成客户端和服务端证书申请:
openssl req -newkey rsa:1024 -out req1.pem -keyout sslclientkey.pem
openssl req -newkey rsa:1024 -out req2.pem -keyout sslserverkey.pem
3) 签发客户端和服务端证书
openssl ca -in req1.pem -out sslclientcert.pem
openssl ca -in req2.pem -out sslservercert.pem
4) 运行ssl服务端和客户端:
openssl s_server -cert sslservercert.pem -key sslserverkey.pem -CAfile demoCA/cacert.pem -ssl3
openssl s_client -ssl3 -CAfile demoCA/cacert.pem
运行客户端程序后,如果正确,会打印类似如下内容:
SSL-Session:
Protocol : SSLv3
Cipher : DHE-RSA-AES256-SHA
Session-ID: A
Session-ID-ctx:
Master-Key: B00EEBD68165197BF
Key-Arg : None
Start Time: 1164077175
Timeout : 7200 (sec)
Verify return code: 0 (ok)
此时,输入数据然后回车,服务端会显示出来。
命令的其他选项:
a) 验证客户端证书
openssl s_server -cert sslservercert.pem -key sslserverkey.pem -CAfile demoCA/cacert.pem -ssl3 -Verify 1
openssl s_client -ssl3 -CAfile demoCA/cacert.pem -cert sslclientcert.pem -key sslclientkey.pem
b) 指定加密套件
openssl s_server -cert sslservercert.pem -key sslserverkey.pem -CAfile demoCA/cacert.pem -ssl3 -Verify 1
openssl s_client -ssl3 -CAfile demoCA/cacert.pem -cert sslclientcert.pem -key sslclientkey.pem -cipher AES256-SHA
其中AES256-SHA可用根据openssl ciphers命令获取,s_server也可用指明加密套件:
openssl s_server -cert sslservercert.pem -key sslserverkey.pem -CAfile demoCA/cacert.pem -ssl3 -Verify 1 -cipher AES256-SHA
c) 指定私钥加密口令
openssl s_server -cert sslservercert.pem -key sslserverkey.pem -CAfile demoCA/cacert.pem -ssl3 -Verify 3 -cipher AES256-SHA -pass pass:123456
openssl s_client -ssl3 -CAfile demoCA/cacert.pem -cert sslclientcert.pem -key sslclientkey.pem -pass pass:123456
用参数pass给出私钥保护口令来源:
-pass file:1.txt (1.txt的内容为加密口令123456);
-pass env:envname (环境变量);
-pass fd:fdname ;
-pass stdin。
比如:
openssl s_client -ssl3 -CAfile demoCA/cacert.pem -cert sslclientcert.pem -key sslclientkey.pem -pass stdin
然后输入口令123456即可。