使用nginx和SNI进行SSL端口统一

时间:2014-07-29 15:51:24

标签: ssl nginx sni

我的内部网络上有许多单独的SSL服务器,我希望在单个IP地址和端口上公开Internet。我的所有客户都保证支持server_name TLS扩展(a.k.a.Server名称指示或SNI)。

我想象的是,nginx会查看传入连接的TLS客户端问候消息,并确定将连接转发到哪个内部IP。然后nginx充当TCP隧道,即nginx本身不参与任何TLS会话(即使它查看传入的TLS客户端问候消息!),并且不需要自己的SSL证书或私钥。

换句话说,TLS会话在客户端上启动,pass-thru nginx(使用TLS客户端hello中的server_name信息多路复用目标)并终止于目标服务器。

这可以用nginx来完成吗? 如果没有,您是否了解其他可以执行此操作的代理软件?

最诚挚的问候,
rkpr

1 个答案:

答案 0 :(得分:3)

似乎haproxy可以做到这样:

use-server srv1 if { req_ssl_sni -i hostname1 }
server     srv1 192.168.0.1:443 weight 0