Nginx https(SSL)双向认证配置

5 篇文章 0 订阅

基于Let’s Encrypt证书和自签名证书实现双向认证。使用Let’s Encrypt实现客户端对服务端的验证,利用自签名证书完成服务端对客户端的认证。

在此只介绍自签名证书生成与配置部分(服务端对客户端的认证),Let’s Encrypt认证参考Let’sEncrypt SSL证书一键安装。

生成服务端证书

openssl genrsa -des3 -out ca.key 4096
openssl genrsa -out ca.key 4096 
openssl req -new -x509 -days 365 -key ca.key -out ca.crt

生成客户端证书

openssl genrsa -out client.key 4096 
openssl req -new -key client.key -out client.csr
openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
openssl pkcs12 -in client.p12 -out all.pem -nodes

按提示填写信息,也可直接回车默认,遇到填写密码的地方,可以选择设置密码,防止证书被盗后的风险。

在Nginx开启对客户端的验证。

erver {
#....

ssl_client_certificate /root/ssl/all.pem;
ssl_verify_client on;

#.....
}

重启Nginx

nginx -t
nginx -s reload

在浏览器上导入证书

以Chrome为例,在地址栏输入chrome://settings/,在设置页下方找到[高级]选项,展开并找到[管理证书],导入证书(.p12文件)。
在这里插入图片描述
选择.pfx,p12类型的文件
在这里插入图片描述
输入证书密码
在这里插入图片描述
按提示导入完成后,重启浏览器(如果打开多个Chrome,关闭所有Chrome实例)。

重新打开Chrome输入地址,看到如下提示框,说明客户端证书导入成功。
在这里插入图片描述

以上是对一个Server范围的认证配置,也可针对具体的url实行认证。

修改Nginx配置

ssl_client_certificate ssl_client_certificate /root/ssl/all.pem;
ssl_verify_client optional;
location / {
      if ($ssl_client_verify != SUCCESS) {
        return 401;
      }
}

完成后重启Nginx。

注:使用其他未导入证书的浏览器,验证双向认证是否生效。

缺失客户端证书效果

在这里插入图片描述

拥有客户端证书的访问效果

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值