用于https的清漆

时间:2015-11-02 10:09:25

标签: nginx https reverse-proxy varnish haproxy

以下是这种情况。我的客户端通过安全网络(https)与多个后端通信。现在,我想建立一个反向代理,主要负载平衡(基于头数据或cookie)和一点缓存。所以,我认为清漆可能有用。

但是,清漆不支持ssl-connection。正如我在很多地方读到的那样,引用"Varnish does not support SSL termination natively"。但是,我想要每一个联系,即。 client-varnish和varnish-backend超过https。我不能在整个网络的任何地方都有明文数据(有限制),所以没有别的东西可以用作SSL-Terminator(或者可以?)。

所以,问题如下:

  • 首先,这意味着什么(如果有人可以用简单的术语解释)" Varnish本身不支持SSL终止"。
  • 其次,使用varnish实现这种情况是否合适?
  • 最后,如果清漆不是一个好的竞争者,我应该切换到其他一些反向代理。如果是,那么哪种情况适合? (HA,Nginx等)

1 个答案:

答案 0 :(得分:1)

  

这意味着什么(如果有人可以用简单的术语解释)“Varnish本身不支持SSL终止”

这意味着Varnish没有内置的SSL支持。除非SSL由单独的软件处理,否则它无法在SSL路径中运行。

这是Varnish的作者的架构决策,他讨论了他在2011年将SSL整合到Varnish中的想法。

他基于多种因素,其中最重要的是正确,如果有的话,同时观察SSL的事实标准库是openssl,这是一个迷宫中收集了超过300,000行代码,他对该代码库既没有信心,也没有可能获得有利的成本/效益比。

他当时的结论总之是“不”。

  

这不是我小时候想做的事情之一,如果我现在梦想它,我称之为噩梦。

     

https://www.varnish-cache.org/docs/trunk/phk/ssl.html

他在2015年重新审视了这个概念。

他的结论再一次是“不”。

  

代码很难,加密代码是双加硬的,如果不是双方硬的话,世界真的不需要另外一段代码来完成密码学的半工作。

     

...

     

当我看到Willy Tarreau的HAProxy之类的东西时,我很难看到任何重大的改进机会。

     

不,Varnish仍然不会添加SSL / TLS支持。

     

相反,在Varnish 4.1中,我们添加了对Willys PROXY协议的支持,这使得可以将来自SSL终止代理(例如HAProxy)的额外细节传递给Varnish。

     

https://www.varnish-cache.org/docs/trunk/phk/ssl_again.html

此增强功能可以简化将varnish集成到具有加密要求的环境中,因为它提供了另一种机制,可以在卸载的SSL设置中保留原始浏览器的标识。

  

这个场景是否适合使用varnish实现?

如果您需要清漆,请使用它,并注意必须单独处理SSL。但请注意,这并不一定意味着未加密的流量必须遍历您的网络......尽管这确实会导致更复杂且耗费CPU的设置。

  

其他任何东西都不能用作SSL-Terminator(或者可以是?)

SSL可以在Varnish的正面卸载,并在Varnish的背面重新建立,所有在运行Varnish的同一台机器上,但是通过单独的进程,使用HAProxy或stunnel或者nginx或其他解决方案,在Varnish之前和之后。明确的任何流量都在一个主机的范围内运行,因此如果主机本身是安全的,可以说它不是漏洞,因为它永远不会离开机器。

  

如果清漆不是一个好的竞争者,我应该切换到其他一些反向代理

这完全取决于您在堆栈中的需求和需求,对您的成本/收益,您的专业水平,资源的可用性以及其他因素。每个选项都有自己的一组功能和限制,在同一个堆栈中使用多个选项肯定不是闻所未闻。