配置Nginx以将客户端证书转发到后端

时间:2017-02-15 14:25:34

标签: ssl nginx https certificate x509

我有一个为双向ssl配置的spring boot服务来验证使用证书的客户端。它落后于nginx代理服务器。因此,要求配置nginx以从客户端提供透明的https连接,并将客户端证书转发到要验证的Web服务(后端)。另外,为不需要客户端身份验证的其他服务配置单向ssl。

类似的东西:

  1. |客户| - > httpS +客户证书---> | NGINX | ---> httpS +客户证书---> |服务1 |

  2. |客户| ------------> HTTPS -----------> | NGINX | ------------> http ------------> |服务2 |

  3. 我的nginx配置:

    server {
        listen       443;
        server_name  xx.xx.xx.xxx;
    
         ssl on;
         ssl_certificate      /path/to/server/cert.crt;
         ssl_certificate_key  /path/to/server/key.key;
         ssl_client_certificate /path/to/ca.crt;
         ssl_verify_client optional;
    
         location /service1/ {
             proxy_pass https://service1:80/;   
             #Config to forward client certificate or to forward ssl connection(handshake) to service1
         }
    
         location /service2/ {
             proxy_pass http://service2:80/;
             #http connection
         }
    }
    

    此外,有没有办法从证书中获取通用名称来验证客户端并在nginx中做出决定?因为使用CA是不够的。

    谢谢..

1 个答案:

答案 0 :(得分:0)

这是不可能的。您试图做的是将nginx代理设置为“中间人”,而TLS在设计上是不允许这样做的。