相关疑难解决方法(0)

由中间CA(链)签名的NGinx SSL证书认证

我试图在nginx中启用客户端证书身份验证,其中证书已由中间CA签名.使用由自签名根CA签名的证书时,我能够正常工作; 但是,当签名CA是中间CA时,这不起作用.

我的简单服务器部分如下所示:

server {
    listen       443;
    server_name  _;

    ssl                  on;
    ssl_certificate      cert.pem;
    ssl_certificate_key  cert.key;

    ssl_session_timeout  5m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers   on;

    ssl_client_certificate ca.pem;
    ssl_verify_client on;
    ssl_verify_depth 1;

    location / {
        root   html;
        index  index.html index.htm;
    }
}
Run Code Online (Sandbox Code Playgroud)

对于ca.pem的内容,我尝试过使用中间CA并连接中间CA证书和根CA证书,例如:

cp intermediate.crt ca.pem
cat root.crt >> ca.pem
Run Code Online (Sandbox Code Playgroud)

我还验证了在使用相同的CA链时,从openssl的角度来看证书是有效的:

openssl verify -CAfile /etc/nginx/ca.pem certs/client.crt 
certs/client.crt: OK
Run Code Online (Sandbox Code Playgroud)

我已经尝试将ssl_verify_depth显式设置为1(如上所述)然后甚至为0(不确定该数字的确切含义),但仍然会得到相同的错误.

我在中间CA的所有变体中得到的错误是"400 Bad Request",更具体地说是"SSL证书错误"(不确定这意味着什么).

也许nginx只是不支持中间证书的证书链?任何帮助非常感谢!

authentication ssl nginx ssl-certificate

39
推荐指数
2
解决办法
5万
查看次数

标签 统计

authentication ×1

nginx ×1

ssl ×1

ssl-certificate ×1