配置nginx 单向ssl认证
/usr/local/nginx/sbin/nginx -V 做之前要先确认nginx有没有ssl_module这个模块
没有的需要重新初始化进行编译 然后killall原来的nginx 重启nginx
这里以我本地配置的虚拟主机为例
虚拟主机配置参考 https://blog.51cto.com/u_15148274/5488171
我这里用的自制CA证书来配置的SSL
自制CA证书参考链接:https://blog.51cto.com/u_15148274/5499646
下方的域名地址要改成ca证书上设置server端的地址 如图所示 (上方链接有设置这个的步骤)
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] 完成!~~~~
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
这时候浏览器访问会时400 如图
需要给浏览器指定一个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
找到桌面上导入的文件双击打开 如图
然后打开浏览器 在右上角找到设置 进去搜索关键字 证书(管理证书) 即可查到是否导入成功 如图!
然后重启浏览器 输入地址访问 如图所示!
完成!~~~
在命令行验证
首先定义hosts
vim /etc/hosts 如图
curl -k --cert /etc/pki/ca_test/client/client.crt --key /etc/pki//ca_test/client/client.key https://www.a.com
#指定crt和key文件 即可正常访问验证 结果如图