Nginx配置https双向认证

本文详细介绍HTTPS双向认证的实现过程,包括生成自签名根证书、客户端证书,以及Nginx配置和验证步骤,解决常见错误,适合初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https双向认证原理:

 

网上查询很多文章,按照他们的步骤下来到最后都是失败的,然后摸索了3天终于搞定,记录下来,希望帮助到其他小伙伴。

一.生成自签名根证书

创建根证书私钥:

openssl genrsa -out root.key 1024

创建根证书请求文件:

openssl req -new -out root.csr -key root.key

############注意##############
根证书的Common Name填写root就可以,根证书的这个字段和客户端证书、服务器端证书不能一样
其他字段必须与根证书一致,为了不容易出错,其他所有字段输入.
输入密码也输入.

创建根证书:

openssl x509 -req -in root.csr -out root.crt -signkey root.key -CAcreateserial -days 3650

这里我们就得到效期为10年的根证书root.crt,我们现在已经有3个文件:

 

二.生成自签名客户端证书

生成客户端证书秘钥:

openssl genrsa -out client.key 1024

生成客户端证书请求文件:

openssl req -new -out client.csr -key client.key

#############注意##############
客户端证书Common Name必须填写访问的域名,该域名与nginx配置的域名一致,可以设置*.xx.com匹配所有二级域名
其他字段必须与根证书字段信息一致,所以其他字段全部输入.
密码输入.

生客户端证书:

openssl x509 -req -in client.csr -out client.crt -signkey client.key -CA root.crt -CAkey root.key -CAcreateserial -days 3650

客户端证书生成完毕,我们的文件有:

校验客户端证书与根证书是否创建正确:

openssl verify -CAfile root.crt client.crt

生客户端p12格式证书:

openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12

# 密码输入.

 

三.Nginx配置

ssl_certificate     /opt/ssl_test/root.crt;
ssl_certificate_key /opt/ssl_test/root.key;
ssl_client_certificate /opt/ssl_test/root.crt;
ssl_verify_client on;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;

 

四.验证

这个时候访问会显示400错误:

下载client.p12到本地的计算机,打开浏览器-》设置-》安全与隐私-》证书管理:

密码输入.

然后点击下一步

导入证书成功,需要重启浏览器,再次访问成功

 

五.curl带证书访问

curl带证书访问:

curl --cert ./client.crt --key ./client.key https://xxx.xxx.com -k

# -k 表示不校验证书合法性,因为证书是自签的

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值