前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ssl双向验证— ssl_verify_depth的作用

ssl双向验证— ssl_verify_depth的作用

原创
作者头像
张三疯
发布2024-04-05 09:42:10
2240
发布2024-04-05 09:42:10

前言

关键词:根证书、中间证书、验证深度、ssl_verify_depth

根证书与中间证书

​在进行ssl验证前,服务器一般会向CA申请公钥证书,即将自己的公开密钥交给CA,CA用自己的私钥向服务器的公钥数字签名并返回公钥证书,在数字签名的过程中,CA一般会用根目录颁发证书,这种证书叫做根证书。

​问题是,万一根目录颁发错了证书,或者需要撤销根,这时所有根目录颁发的证书都将失效,这样代价是巨大的,因此出现了中间根,顾名思义,CA用私钥对中间根进行签名,使它可信,因此由中间根颁发的证书也是可信的,即中间证书。当发生撤销时,只需要撤销中间根颁发的证书就可以。

​这里需要解释一下根证书,个人理解为客户端在验证服务器的公钥证书时,需要拿CA的公钥来解密服务器公钥证书的签名,CA的根公钥需要提前拿到手,一般内置到浏览器中,存放的地方视为根目录,存放中间证书即为中间目录。有中间证书的情况下,应该是先从中间目录取到对应中间公钥解密,然后循环此过程,直到从根目录拿到公钥验证成功,这时可以算是验证通过。

验证深度

​在CA的证书体系中,证书从根目录出发,像一条链一样,有很多的中间根,也叫做证书链,我觉得更像一棵二叉树。

​在ssl验证的过程中,直接尝试中间证书进行客户端认证是无法通过的,需要一层一层回溯验证,直到找到根。

​这个验证深度就相当于当前中间证书在整棵树中的深度。

ssl_verify_depth

​上面已经提到了,验证需要层层回溯,向上可以回溯多少次由ssl_verify_depth决定,当ssl_verify_depth = 1时,回溯层数为0,即任何中间证书都不会通过验证,除非是根证书。简而言之,中间证书的深度要小于ssl_verify_depth的值,才会验证通过。

在nginx中ssl_verify_depth的值默认是为1的。

代码语言:javascript
复制
句法:    ssl_verify_depth number;
默认:    ssl_verify_depth 1;
语境:    http, server

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 根证书与中间证书
      • 验证深度
        • ssl_verify_depth
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档