Nginx配置ssl双向认证(精简!好文章!)

最近在搞ssl双向认证的任务,需要在本地调测,所以就使用自己生成的CA来生成证书。 这里只说如何配置双向认证,双向认证的概念就不说了。 具体看如下链接:https://www.jianshu.com/p/fb5fe0165ef2

CA与自签名

# 制作CA私钥
openssl genrsa -out ca.key 2048

# 制作CA公钥/根证书
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
# Common Name 随意填写;其它填写”.”

服务器端证书

# 制作服务器私钥
openssl genrsa -out server.pem 1024
openssl rsa -in server.pem -out server.key

# 生成签发请求
openssl req -new -key server.pem -out server.csr
# Common Name填写访问服务器时域名,配置nginx时用到,不能与CA的相同其它填写”.”

# 用CA签发证书
openssl x509 -req -sha256 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt

客户端证书

# 制作私钥
openssl genrsa -out client.pem 1024
openssl rsa -in client.pem -out client.key 

# 生成签发请求
openssl req -new -key client.pem -out client.csr
# Common Name填写访问服务器时域名,配置nginx时用到,不能与CA的相同 其它填写”.”

# 用CA签发
openssl x509 -req -sha256 -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out client.crt

# 使用浏览器访问时,需要生成p12格式的客户端证书
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12

配置NGINX

# 配置https双向认证的主要配置
listen 443 ssl;
server_name hostName;
server_tokens off;
ssl on;
ssl_certificate      server.crt;  # server证书公钥
ssl_certificate_key  server.key;  # server私钥
ssl_client_certificate ca.crt;  # 根级证书公钥,用于验证各个二级client
ssl_verify_client on;  # 开启客户端证书验证

# 配置好后重新加载nginx
service nginx reload

测试

# 命令行Curl测试
curl --insecure --key client.key --cert client.crt hostName
# 收到网页信息,成功

# 浏览器访问测试
把client.p12导入到浏览器的https配置中,访问站点建立连接的时候nginx会
要求客户端把这个证书发给自己验证,如果没有这个证书就拒绝访问。

如何获取证书中的用户邮箱信息

nginx ssl模块有个变量:$ssl_client_s_dn,这个变量存储的是认证信息,内容格式如下: emailAddress=client email,CN=server host name,通过在nginx中使用该变量配置个请求头,可以在 业务代码中获取这个信息,然后从其中解析出邮箱信息。

参考链接

https://segmentfault.com/a/1190000002866627

 

转载自:https://www.dazhuanlan.com/2019/11/30/5de16d242a0f9/

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值