在使用中间 CA(自创建)时,我在 nginx 的客户端身份验证方面遇到了一些困难。
尽管相同的证书包(单个 .pem 文件中的中间 + 根证书)适用于 IMAP(dovecot)和 SMTP(后缀)中的客户端身份验证,但我似乎无法让它与 nginx 一起使用。相反,我收到以下错误:
[info] 23383#23383: *14583139 client SSL certificate verify error: (27:certificate not trusted) while reading client request headers, client: 82.39.81.156, server: <hostname>, request: "GET /mailboxes HTTP/1.1", host: "<hostname>"
Run Code Online (Sandbox Code Playgroud)
据我了解,来自 openssl 的错误类型 27 是X509_V_ERR_CERT_UNTRUSTED,或者证书出于特定目的不受信任的某种问题,但是我无法进一步详细说明。
个人证书和捆绑证书似乎都可以正确验证openssl verify(我可以根据中间证书或捆绑证书验证客户端证书,并且中间证书针对根证书进行验证,即 - 在我能想到的每个组合中都是有效的)。
我的根和中间 CA 应该使用正确的扩展名设置以验证我的客户端证书,这是我的自定义openssl.conf文件的相关示例:
[ v3_ca ]
# Extensions for a typical CA (`man x509v3_config`).
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true
keyUsage = …Run Code Online (Sandbox Code Playgroud)