强制 NGINX 上游服务器连接到特定的 TLS 版本和密码

强制 NGINX 上游服务器连接到特定的 TLS 版本和密码

我的问题与已经提到的问题非常相似: 强制 nginx 代理服务器使用特定的 SSL 协议

除了这里,解决方法是降低 SSL 版本,但就我而言并非如此。下面是我的拓扑。我试图在客户端和服务器(前端和后端(在 NGINX 术语中应该是上游))上模拟类似 F5 的 SSL 代理。

SSL 客户端---TLS1.3---->NGINX 代理--TLS1.3---> SSL 服务器

我的前端运行良好,TLS1.3 握手也很好,但我的上游也需要 TLS1.3,这就是我发现问题的地方。无论我在 NGINX conf 文件中设置什么,它总是将 TLS1.2 版本和相应的密码转发到真实服务器,而这些会被拒绝。如果我在服务器端使用 TLS1.2,则握手成功。

我甚至尝试通过在列表中提及 TLS1.3 来强制版本,但没有成功。

下面是我的 nginx 配置片段。


upstream pool_transparent {
zone        test_pool_zone 64k;
server      X.0.0.1:443;
server      X.0.0.2:443;
server      X.0.0.3:443;
server      X.0.0.4:443;
}

server {
listen                          443 ssl default_server;
status_zone                     test;
ssl_certificate                 certs/x.crt;
ssl_certificate_key             certs/x.key;
ssl_protocols                   TLSv1.3;
ssl_ecdh_curve                  secp521r1:secp384r1:prime256v1:X25519;
#ssl_ciphers                    HIGH:!aNULL:!MD5;
ssl_ciphers                     TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SH\                               A256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_session_cache               shared:SSL:10m;
ssl_session_timeout             10m;

location / {
    proxy_pass                  https://pool_transparent;
    proxy_ssl_protocols         TLSv1.3;
    #proxy_ssl_protocols        TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    proxy_http_version          1.0;
    proxy_set_header            Connection "";
    proxy_set_header            Host $host;
}

location @health_check {
    proxy_pass                  https://pool_transparent;
    proxy_set_header            Host $host;
    health_check                uri=/ interval=10 fails=1 passes=1;
}
}

server {
listen                          8080; 

location /api {
    limit_except GET {
        auth_basic              "NGINX Plus API";
        auth_basic_user_file    /home/rakesh/passwdfile;
    }

    api                         write=on;
    #allow                      0.0.0.0/0;
    #deny                       all;
}

location = /dashboard.html {
    root                        /usr/share/nginx/html;
}

location /swagger-ui {
    root                        /usr/share/nginx/html;
}
}

任何帮助将非常感激。

相关内容