全部博文(252)
分类: LINUX
2011-12-27 13:36:40
转自: 搞定NGINX客户端SSL认证[APACHE客户端SSL认证方法也类似] |
2008-11-01 18:34:46 |
我的环境:ubuntu 8.10, nginx 0.5.33 ,OpenSSL 0.9.8g 以下一步步跟着操作,绝对可以实现客户端SSL认证[实际上具体什么WEB SERVER倒是无所谓] 1.生成根CA: openssl genrsa -des3 -out RootCA.key 2048 过程中会提示你输入你的密码,随便输 openssl req -new -key RootCA.key -out RootCA.req 首先需要输入刚才你设定的密码,注意,这里的OU[Organizational Unit]和CN[Common Name]要为空! openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey RootCA.key -in RootCA.req -out RootCA.crt 这里需要你再次输入刚才设定的密码! 至此根CA生成完毕! 2.生成服务器端证书 openssl genrsa -out ServerCA.key 2048 openssl req -new -key ServerCA.key -out ServerCA.req 注意,此处信息应与根CA一致,但CN要输入你的域名!!OU可空! openssl x509 -req -days 730 -sha1 -extensions v3_req -CA RootCA.crt -CAkey RootCA.key -CAserial RootCA.srl -CAcreateserial -in ServerCA.req -out ServerCA.crt 这里需要再次输入你设定的密码 至此服务器端证书制作完毕 3.生成客户端证书 openssl genrsa -des3 -out ClientCA.key 2048 这里需要你设定一个客户端的密码,建议与根CA的不一样 openssl req -new -key ClientCA.key -out ClientCA.req 需要输入刚才设定的客户端密码,这里的CN要与服务器端的不一样,可以用你的名字来做CN openssl x509 -req -days 730 -sha1 -extensions v3_req -CA RootCA.crt -CAkey RootCA.key -CAserial RootCA.srl -CAcreateserial -in ClientCA.req -out ClientCA.crt 需要输入根CA的密码 openssl pkcs12 -export -in ClientCA.crt -inkey ClientCA.key -out ClientCA.pfx 需要输入客户端证书的密码,并且设定导出时输入的密码 至此客户端证书生成完毕 现在我们已经有了三张证书,就差服务器配置和客户端导入了,下面以NGINX为例,提供一个简单的配置文件 4.NGINX配置文件: 关键部分: listen 443; server_name mytools; ssl on; ssl_certificate /etc/nginx/certs/ServerCA.crt; ssl_certificate_key /etc/nginx/certs/ServerCA.key; ssl_client_certificate /etc/nginx/certs/RootCA.crt; ssl_verify_client on; ssl_verify_depth 1; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; 5.重启NGINX: /etc/init.d/nginx restart 6.客户端浏览器导入: 我这里是OPERA,选择配置->高级->安全->证书->证书管理,导入个人证书,选择ClientCA.pfx文件,输入你 设定的导入密码,以及你的客户端crt文件,然后输入服务器的地址,就可以走客户端SSL认证了 |