我有一个为双向ssl配置的spring boot服务来验证使用证书的客户端。它落后于nginx代理服务器。因此,要求配置nginx以从客户端提供透明的https连接,并将客户端证书转发到要验证的Web服务(后端)。另外,为不需要客户端身份验证的其他服务配置单向ssl。
类似的东西:
|客户| - > httpS +客户证书---> | NGINX | ---> httpS +客户证书---> |服务1 |
|客户| ------------> HTTPS -----------> | NGINX | ------------> http ------------> |服务2 |
我的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是不够的。
谢谢..
答案 0 :(得分:0)
这是不可能的。您试图做的是将nginx代理设置为“中间人”,而TLS在设计上是不允许这样做的。