Nginx ssl_client_certificate支持多CA 证书链使用记录

在Nginx 配置文件中开启客户端证书校验需要下面一段配置。(未贴出全部nginx.conf)

 server{
            listen 444 ssl;
            ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers AES128-SHA,;
            ssl_certificate  /test/signcert.pem;
            ssl_certificate_key /test/signprivate.pem;
            ssl_verify_client on;
            # 指定客户端证书到根证书的深度 多ca情况下以最大深度为准
            ssl_verify_depth 2;
            # 允许客户端访问的CA合集  向客户端发送
            ssl_client_certificate  /test/cert/clientCertificate.pem;

            ssl_session_cache  shared:SSLSTREAM:1m;
            ssl_session_timeout  5m;
            ssl_session_tickets  off;
            proxy_connect_timeout  10s;
            proxy_timeout  30s;
            proxy_pass  PROTECT;
            proxy_protocol on;
       
        }

在我测试中发现ssl_verify_client 开启校验时ssl_verify_depth,ssl_client_certificate 参数都需要存在。
ssl_trusted_certificate这个参数在官方文档介绍中是不向客户端发送证书链。
地址:http://nginx.org/en/docs/http/ngx_http_ssl_module.html
在这里插入图片描述这是ssl_client_certificate 的解释。
一开始总是以为ssl_trusted_certificate和ssl_client_certificate 是互斥操作,但后来看了另一篇文章了解到ssl_trusted_certificate 是与ocsp 验证相关的,与ssl_stapling 参数或许有关。但未验证正确性。
参考文章地址:https://blog.csdn.net/vencent7/article/details/79190249
下面主要说一下ssl_client_certificate 这个配置项,该项需要将允许的CA集合放入到一个文件里面,在之前调研时好像还有其它实现方式,因为本次只是调研任务故我只测试了这一种情况。将两个CA的pem证书同时放入到目标地址文件中,文件内容如下。

(图一)

图一
文件中存在两个CA,一个是二级CA和它的一级CA的组合(二级CA我这里命名叫“OCA” 它的一级CA我叫它“RCA”),另一个是单独的一级CA(我命名叫“RCA for SIGN”),分别用“OCA”和“RCA for SIGN” 签发下级证书,签发出p12格式的证书后再导入到本地中。这里将jin1.p12(OCA签发出来的)和jin3.p12(OCA签发出来的),ojin.p12导入(RCA for SIGN 签发出来的)。

在这里插入图片描述
导入之后可以在浏览器中查看。
在这里插入图片描述
将“OCA” “RCA” 和“RCA for SIGN” 原格式为p12的根证转换为pem格式的文件再存入到/test/cert/clientCertificate.pem中。如图一所示格式:需要含头含尾,必须是标准的格式,不能有空行出现, 不然启动时报错。我的放入顺序为“OCA” 放前“RCA” 放后,“RCA for SIGN”放在最后。
之后启动nginx,访问444端口,查看效果。
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值