在前两篇文章中
网络安全通讯(1)—-给你的Webserver启用SSL
网络安全通讯(2)—-让别人相信你的服务器
我们探讨了如何让你的客户相信你的服务器,这篇文章我们探讨一下你如何去相信你的客户。
在很多场景下,我们是需要关心客户的身份的,一个很安全的做法就是给你的客户发放一个签名的证书,让你的客户拿着证书来,这时候你验证了证书,你也就相信了你的客户。我们可以使用Apache提供的客户端验证(Client Certificate)功能。
- 生成客户端的私钥和CSR文件
openssl genrsa -out client.key 1024
openssl req -new -key client.key -out client.csr - 用前面我们自己的CA签发客户的证书
openssl x509 -req -days 360 -in client.csr -CA ca.crt -CAkey ca.key -CAserial ca.srl -out client.crt - 此时客户端的证书已经制作完毕(和制作Server的一样),但是我们的浏览器需要pkcs12格式的文件,所以我们需要签一个pkcs12格式的文件
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12 -name your_certificate_client_name
这里需要你的client的CSR文件设置的密码,还有your_certificate_client_name替换成你client的名字 - 打开Apache需要客户验证的设置
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile “/path_to/ca.crt” - 重新启动apache,尝试一下访问,此时访问并不成功Firefox会包一个-12227的错误,IE干脆显示不出来,说明客户端验证没有通过
- 把生成的客户端pkcs12文件导入到浏览器,
Firefox Tools->Options->Advanced->Encryption->View Certificates->Your Certificates->Import
IE Tools->Internet Options->Content->Certificates->Personal->Import - 再次访问服务器,It works.
此时你的客户端(也就是浏览器)可以通过服务器的验证了。你也可以相信你的客户了。
0 Responses
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.