Nginx SSL 配置

Nginx SSL 配置

我想设置 Nginx 以进行 SSL 终止。所有具有有效客户端证书的请求都将在 Nginx 终止,并且请求将转发到后端应用程序。我有以下 Nginx 配置

    upstream app {
        server app:8080;
    }

    server {
        listen                 443 ssl;
        server_name            localhost;
        ssl_certificate        /etc/ssl/cert_example_com.crt;
        ssl_certificate_key    /etc/ssl/cert_example_com.key;
        ssl_client_certificate /etc/ssl/ca.crt;
        ssl_protocols          TLSv1.2 TLSv1.3;
        ssl_ciphers            HIGH:!aNULL:!MD5;
        ssl_verify_client      on;

        location / {
                proxy_pass         http://app;
                proxy_set_header   X-Forwarded-For $remote_addr;
                proxy_http_version 1.1;
                proxy_set_header   Upgrade $http_upgrade;
                proxy_set_header   Connection 'upgrade';
                proxy_set_header   Host $host;
                proxy_cache_bypass $http_upgrade;
        }
    }

所有这些证书都是使用私有 CA 生成的,并且客户端配备了证书以连接到后端。

对于/etc/ssl/app_domain_com.crt;我是否需要包含整个证书链(证书+中级证书+根 CA 证书) 在此文件中还是仅仅是证书?

我尝试了以下内容
/etc/ssl/cert_example_com.crt仅包含服务器证书。
/etc/ssl/cert_example_com.key包含服务器密钥。
/etc/ssl/ca.crt包含中间 CA 证书(不是根 CA)。

并且在客户端
client.crt仅包含客户端证书。
client.key包含客户端密钥。

经过测试curl -k --cert client.crt --key client.key --header "Content-Type: application/json" --request POST .....

但出现以下错误

<head><title>400 The SSL certificate error</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<center>The SSL certificate error</center>
<hr><center>nginx/1.19.10</center>
</body>

还尝试了client.crt包含客户端证书 + 中间 CA + 根 CA(按此顺序)。得到与上述相同的错误。

相关内容