我想知道ssl_verify_depth在nginx.conf中是什么意思?文档不是很详细,只有这句话:设置客户端证书链中的验证深度。增加或减少是什么意思?我注意到增加它使nginx更有可能接受证书,但为什么呢?
rhfm7lfc1#
深度实际上是中间证书颁发者的最大数量,即验证客户端证书时允许遵循的最大CA证书数。深度为0意味着仅接受自签名的客户端证书,默认深度为1意味着客户端证书可以是自签名的,或者必须由服务器直接知道的CA签名(即CA的证书在SSLCACertificatePath下)等。深度为2意味着接受由(单级)中间CA签名的证书,即中间CA,其CA证书由服务器直接知道的CA签名。我们关于这个指令的perl测试有一些非常有用的注解,可以帮助你更好地理解我在NGINX上下文中的解释。https://github.com/nginx/nginx-tests/blob/7a9e95fdd30729540ee9650be7f991c330367d5b/ssl_verify_depth.t#L145
k0pti3hp2#
从文档:SSL_CTX_set_verify_depth()和SSL_set_verify_depth()对终端实体和信任锚证书之间的证书数量设置限制。终端实体和信任锚证书都不计入深度。如果到达受信任颁发者所需的证书链长度超过深度+2,则将颁发X509_V_ERR_CERT_CHAIN_TOO_LONG。深度计数为“级别0:对等证书”、“级别1:CA证书”,“级别2:更高级别的CA证书”等。将最大深度设置为2允许级别0、1、2和3(0是端实体,3是信任锚)。默认深度限制为100,允许对等证书、最多100个中间CA证书和最终信任锚证书。来源:https://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_set_verify_depth.html#NOTES
2条答案
按热度按时间rhfm7lfc1#
深度实际上是中间证书颁发者的最大数量,即验证客户端证书时允许遵循的最大CA证书数。
深度为0意味着仅接受自签名的客户端证书,默认深度为1意味着客户端证书可以是自签名的,或者必须由服务器直接知道的CA签名(即CA的证书在SSLCACertificatePath下)等。深度为2意味着接受由(单级)中间CA签名的证书,即中间CA,其CA证书由服务器直接知道的CA签名。
我们关于这个指令的perl测试有一些非常有用的注解,可以帮助你更好地理解我在NGINX上下文中的解释。
https://github.com/nginx/nginx-tests/blob/7a9e95fdd30729540ee9650be7f991c330367d5b/ssl_verify_depth.t#L145
k0pti3hp2#
从文档:
SSL_CTX_set_verify_depth()和SSL_set_verify_depth()对终端实体和信任锚证书之间的证书数量设置限制。终端实体和信任锚证书都不计入深度。如果到达受信任颁发者所需的证书链长度超过深度+2,则将颁发X509_V_ERR_CERT_CHAIN_TOO_LONG。深度计数为“级别0:对等证书”、“级别1:CA证书”,“级别2:更高级别的CA证书”等。将最大深度设置为2允许级别0、1、2和3(0是端实体,3是信任锚)。默认深度限制为100,允许对等证书、最多100个中间CA证书和最终信任锚证书。
来源:https://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_set_verify_depth.html#NOTES