配置nginx 单向ssl认证
 /usr/local/nginx/sbin/nginx -V    做之前要先确认nginx有没有ssl_module这个模块
 没有的需要重新初始化进行编译 然后killall原来的nginx 重启nginx

image.png 这里以我本地配置的虚拟主机为例

虚拟主机配置参考 https://blog.51cto.com/u_15148274/5488171

我这里用的自制CA证书来配置的SSL

自制CA证书参考链接:https://blog.51cto.com/u_15148274/5499646

下方的域名地址要改成ca证书上设置server端的地址 如图所示 (上方链接有设置这个的步骤) image.png image.png

443端口为ssl监听端口。 
ss1_certificate指定crt文件所在路径,如果写相对路径,必须把该文件和nginx.conf文件放到一个目录下。 ss1_centificate_key指定key文件所在路径。
ssl protocols指定SSL协议。
ss1_ciphers配置ssl加密算法,多个算法用:分隔,ALL表示全部算法,!表示不启用该算法,+表示将该算法排到最后面去。
551_prefer_server_ciphers 如果不指定默认为off,当为on时,在使用SSLV3和TLS协议时,服务器加密算法将优于客户端加密算法。
vim www.a.com.conf   加入下列内容

server {
        listen 443 ssl;
        server_name www.a.com;
        index index.html;
        root /data/www/www.a.com;
        ssl_certificate /etc/pki/ca_test/server/server.crt;
        ssl_certificate_key /etc/pki/ca_test/server/server.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!eNULL;
        ssl_prefer_server_ciphers on;
}


保存退出之后重载nginx
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

###关闭防火墙
最后在Windows上定义hosts
Windows hosts路径
C:\Windows\System32\drivers\etc
找到hosts文件打开 加入如图中所示  自己的地址和域名  即可

image.png image.png![image.png] image.png 完成!~~~~

nginx 配置SSL双向认证

vim www.a.com.conf   加入下列内容

ssl_client_certificate /etc/pki/ca_test/root/ca.crt;
ssl_verify_client on;

保存退出之后重载nginx
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

image.png 这时候浏览器访问会时400 如图

image.png

需要给浏览器指定一个key文件(公钥文件)
首先需要将client.key 转换成pfx(p12)格式
cd /etc/pki/ca_test/client/                到client.key文件的路径下
openssl pkcs12 -export -inkey client.key -in client.crt -out client.pfx   转换
#执行转换步骤时会让设置一个密码 后续导入浏览器时会用到

yum -y install lrzsz   下载包
命令行输入  sz sz client.pfx    执行     将client.pfx  传输到Windows桌面

然后将client.pfx拷贝到Windows  
找到桌面上导入的文件双击打开  如图

image.png image.png image.png image.png image.png image.png image.png

然后打开浏览器 在右上角找到设置 进去搜索关键字 证书(管理证书) 即可查到是否导入成功 如图!

image.png

然后重启浏览器 输入地址访问 如图所示!

image.png 完成!~~~

在命令行验证
首先定义hosts
vim /etc/hosts   如图

image.png

curl -k --cert /etc/pki/ca_test/client/client.crt --key /etc/pki//ca_test/client/client.key https://www.a.com
#指定crt和key文件  即可正常访问验证    结果如图

image.png