Nginx环境下配置https双向认证
发布日期:2016-03-07https双向认证就是客户端获取服务器端的SSL证书,认证服务器端是否为值得信任的主机,SSL证书安装环境,如果访问的站点不受信任,浏览器就会发出警告提示;同时服务器端也会检查客户端证书是不是服务器端所信任的,这样服务器端就能确认,该客户端是不是合法用户,如果不是,就会拒绝为客户端提供服务。
因此,只有在服务器端配置受浏览器信任的SSL证书,客户端也配置受服务器端信任的客户端证书,才能使https双向认证顺利完成。找正规CA颁发机构(如沃通CA)签发SSL证书,才能受浏览器信任,不需要手动安装根证书,就能自动识别SSL证书状态、验证SSL证书信息。本文主要介绍如何在Ngnix环境下配置https双向认证。
Nginx https双向认证配置环境
Centos 6.4 操作系统; Nginx 1.9.1;
Openssl 1.0.1+;
SSL 证书一张(备注:本指南使用 s.wosign.com 域名 沃通超真OV SSL 证书进行操作,与其它级别的SSL证书部署方式通用)。
网络环境要求
请确保站点是一个合法的外网可以访问的域名地址,可以通过http://正常访问。
申请SSL证书
成功在沃通CA申请SSL证书后,会得到一个有密码的压缩包文件,输入SSL证书密码后解压得到五个文件:for Apache、for IIS、for Nginx、for Other Server,这个是证书的几种格式,Nginx 上需要用到 for Nginx 格式的证书。打开 for Nginx 文件可以看到 2 个文件。包括公钥、私钥。
安装SSL证书
打开 Nginx 安装目录下 conf 目录中的 nginx.conf 文件找到
# HTTPS server
#
#server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# 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;
# location / {
# root html;
# index index.html index.htm;
# }
#}
将其修改为(在 nginx 安装目录下创建 sslkey 目录,将 for Nginx 里面的两个证书文件拷贝
到 sslkey 目录下):
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate sslkey/wosign.com.crt; (证书公钥)
ssl_certificate_key sslkey/wosign.com.key; (证书私钥)
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:-LOW:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
保存退出,并重启 Nginx。
通过 https加密协议访问您的站点,测试站点SSL证书的配置是否正常。
客户端证书认证
如果要求客户采用客户证书认证方式,可以在原来的配置下增加如下参数:
server {
......
......
......
ssl_verify_client on
ssl_client_certificate ca.cer
ssl_verify_depth 1
}
配置说明:
ssl_ verify_client on; 要求SSL客户证书认证。
ssl_client_certificate ca.cer; 签发客户证书的CA证书,用来验证客户证书。
ssl on; SSL功能打开,采用SSL通信协议。
ssl_verify_depth 1; SSL客户证书认证链长度,根据ca.cer里面的长度来设置。
测试成果
设置好后,成功启动Nginx,然后打开IE访问,第一次访问时浏览器会询问双向认证时使用的证书。如果浏览器正常,没有警告提示,那配置就成功了。使用沃通SSL证书的用户,在配置过程中遇到任何问题,可以随时联系沃通7×24小时客户服务,随时为您解决技术问题。
参考: