Nginx como proxy inverso para Gitblit con autenticación de certificado de cliente. Conexión cerrada entre pares en el protocolo de enlace SSL mientras el protocolo de enlace SSL se realiza en sentido ascendente

Nginx como proxy inverso para Gitblit con autenticación de certificado de cliente. Conexión cerrada entre pares en el protocolo de enlace SSL mientras el protocolo de enlace SSL se realiza en sentido ascendente

Usamos nginx como proxy inverso para gitblit con autenticación de certificado de cliente.

Dada la configuración de nginx como se muestra a continuación.

server {
listen       443 ssl http2 default_server;
server_name  _;

charset utf-8;

ssl_certificate      D:\cert.pem;
ssl_certificate_key  D:\key.pem;

ssl_session_cache    off;
ssl_session_timeout  1h;
ssl_buffer_size 8192;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers  HIGH:!aNULL:!MD5;

ssl_client_certificate D:\Program\GitBlit\gitblit-1.8.0\data\certs\ca.pem;
ssl_verify_client optional;

ssl_prefer_server_ciphers  on;
proxy_intercept_errors on;          

location /git {
    proxy_pass https://127.0.0.1:1111;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    
    proxy_ssl_verify off;
    proxy_ssl_name $host;
    proxy_ssl_server_name on;
    proxy_ssl_session_reuse off;
}
}

Hacer ssl_verify_client optional;que el cliente web requiera el certificado de cliente al navegar a https://my_server/git. Pero recibí el error 502 de puerta de enlace incorrecta. El registro de errores de nginx se muestra a continuación y no se ve ningún registro de errores desde gitblit.

2023/10/25 14:48:14 [error] 29404#2072: *43 peer closed connection in SSL handshake while SSL handshaking to upstream, client: 127.0.0.1, server: _, request: "GET /git/ HTTP/2.0", upstream: "https://127.0.0.1:1111/git/", host: "127.0.0.1"

Me aseguro de que si navego hasta elhttps://127.0.0.1:1111/gity proporcione el mismo certificado de cliente, la autenticación funciona bien. El certificado SSL de gitblit está firmado en my_server por una CA autofirmada (D:\Program\GitBlit\gitblit-1.8.0\data\certs\ca.pem para ssl_client_certificate).

¿Esta causa se debe a que nginx no pudo reconocer el certificado SSL de gitblit o no pudo pasar el certificado del cliente para la autenticación?

información relacionada