使用pfSense,Varnish和Tomcat实现HTTPS

情况

我有一个托pipe多个虚拟机的ESXi服务器,其中包括一个用于每个pfSense,Varnish和Tomcat的虚拟机。 他们configuration如下:

  1. pfSenseVM (防火墙,IP = 10.0.0.1)

    • 从端口80到VarnishVM:80和端口443到VarnishVM:443 NAT规则
    • webConfigurator侦听端口443
    • webConfigurator不能从外部访问
    • 已经在系统 > 证书pipe理器下安装了一个默认的带有CN=Common Name (eg, YOUR name) SSL证书CN=Common Name (eg, YOUR name)
  2. VarnishVM (Proxy,IP = 10.0.0.2)

    • 路由请求my.domain.com:443到后端Tomcat:8443
  3. TomcatVM (应用程序服务器,IP = 10.0.0.3)

    • server.xml 连接器监听端口8443
    • 自签名证书导入上述连接器使用的密钥库中
    • 自签名证书具有CA CN=*.domain.com

问题

看来我收到了错误的证书( CN=Common Name (eg, YOUR name) )。

  • 当我在浏览器中inputhttps://my.domain.com时,它会继续加载,并且在几次尝试之后,我在Firebug中看到请求被中止。 varnishlog显示超时 。
  • 当我从TomcatVM调用wget https://my.domain.com ,收到的证书是安装在pfSense中的证书,并且由于证书的CN而不工作。 我相信这是关键。
  • 当我从TomcatVM调用wget https://localhost:8443 ,接收到的证书是安装在Java密钥库中的证书,这是正确的,但显然不工作,因为localhost不匹配*.domain.com

为什么我收到错误的证书? 我只能假设我需要从pfSenseconfigurationwebConfigurator来侦听不同的端口。 如果这是正确的,我将如何做到这一点?

UPDATE

我现在有一个磅实例( PoundVM ),并且有webConfigurator坐在不同的端口上。

  • pfSense现在有一个从端口443到PoundVM:443的NAT规则( replaceVarnishVM:443
  • PoundVM (IP = 10.0.0.4)
    1. 磅监听端口443,并configuration像这样

它仍然不起作用。 萤火虫仍然显示“中止”,我看不到任何从庞德的日志消息。

我还应该注意到(自签名)证书是使用OpenSSL(如.crt)在TomcatVM上创build的,并导入到Java密钥库中。 然后,我将这个和私钥复制到了PoundVM并使用本指南创build了一个.pem文件。 磅configuration中的Cert值指向这个文件。 那是对的吗?

更新2

我在Poundconfiguration文件中发现了复制粘贴错误,HTTPS侦听器侦听的地址现在是10.0.0.4,而不是127.0.0.1,从外部可以到达磅。 它现在给我一个HTTP 414:请求URI太长,通常所请求的URI大约有200个字符。 我发现编译英镑时可以configurationMAXBUF 。 但我安装它使用apt …不过,我发现414奇怪,因为该URI是https://my.domain.com/some/path/that/is/certainly/not/1024/bytes/long

更新3

我现在通过redirect到Tomcat的HTTP端口,而不是HTTPS。 庞德对我来说是新的,我想我可以将encryption的请求redirect到Tomcat。

webConfigurator坐在端口443,你的NAT也是如此。 你不能双方都有。 你提到移动webConfigurator仍然不允许这个工作; 我的猜测是,pfSense有一些特殊的魔术适用于端口443限制pipe理员访问。 你可以禁用这个魔术,或者做简单的select,或者针对不同的端口或不同的IP运行NAT。 在这两者中,单独的端口可能要多得多,要容易得多。 假设您select了8443(与Tomcat服务器保持一致)。 然后您可以通过https://my.domain.com:8443访问该网站。

现在,所有的说法,你没有解释你是如何在这里解码SSL。 清漆不会用于SSLstream量。 因此,即使一旦你得到这个工作,它不会工作。 所以你要么多填一点你的解释,要么重新思考/取消你使用的清漆。 我见过的一个常见解决scheme是在Varnish之前使用专用的SSL解码代理,如Pound 。

请参阅Varnish网站上的“ 为什么没有SSL ”常见问题。