情况
我有一台 ESXi 服务器托管多个虚拟机,包括 pfSense、Varnish 和 Tomcat 各一台。它们的配置如下:
pfSenseVM
(防火墙,IP=10.0.0.1)- NAT 规则从端口 80 到
VarnishVM:80
端口 443 到VarnishVM:443
- webConfigurator 监听端口 443
- webConfigurator 无法从外部访问
- 已安装默认 SSL 证书,如下
CN=Common Name (eg, YOUR name)
所示系统>证书管理器
- NAT 规则从端口 80 到
VarnishVM
(代理,IP=10.0.0.2)- 将请求路由
my.domain.com:443
到后端Tomcat:8443
- 将请求路由
TomcatVM
(应用服务器,IP=10.0.0.3)- 连接器监听
server.xml
端口 8443 - 上述连接器使用的密钥库中导入了自签名证书
- 自签名证书有 CA
CN=*.domain.com
- 连接器监听
问题
我似乎收到了错误的证书(CN=Common Name (eg, YOUR name)
)。
- 当我
https://my.domain.com
在浏览器中输入时,它一直在加载,经过几次尝试后,我在 Firebug 中看到请求已中止。varnishlog 显示暂停。 - 当我
wget https://my.domain.com
从 调用时TomcatVM
,收到的证书是在 pfSense 中安装的并且由于证书而无法正常工作CN
。我相信这是关键。 - 当我
wget https://localhost:8443
从 调用时TomcatVM
,收到的证书是安装在 Java 密钥库中的密钥,这是正确的,但显然不起作用,因为localhost
不匹配*.domain.com
为什么我会收到错误的证书?我只能假设我需要从 pfSense 配置 webConfigurator 以监听不同的端口。如果这是正确的,我该怎么做?
更新
我现在有一个 Pound 实例(PoundVM
)并让 webConfigurator 位于不同的端口上。
- pfSense 现在有一个从端口 443 到
PoundVM:443
(替换一个VarnishVM:443
PoundVM
(IP=10.0.0.4)- Pound 监听 443 端口,配置如下这
它仍然不起作用。Firebug 仍然显示“已中止”,我看不到来自 Pound 的任何日志消息。
我还应该注意,(自签名)证书是TomcatVM
使用 OpenSSL(.crt)创建的,并导入到 Java 密钥库中。然后我将其和私钥复制到PoundVM
并使用创建了一个 .pem 文件本指南.Cert
中的值磅配置指向此文件。对吗?
更新2
我在磅配置,HTTPS 侦听器侦听的地址现在是 10.0.0.4,而不是 127.0.0.1,并且可以从外部访问 Pound。现在它给我一个 HTTP 414:请求 URI 太长,尽管请求的 URI 大约有 200 个字符长。我发现MAXBUF
在编译 pound 时可以配置。但我使用 apt 安装它...尽管如此,我发现 414 很奇怪,因为 URI 是https://my.domain.com/some/path/that/is/certainly/not/1024/bytes/long
更新 3
现在,我通过重定向到 Tomcat 的 HTTP 端口(而不是 HTTPS)使它正常工作。Pound 对我来说很新,我认为我可以将加密请求重定向到 Tomcat。
答案1
webConfigurator 位于端口 443 上,您的 NAT 也是如此。您无法同时实现两者。您提到移动 webConfigurator 仍然不允许此操作;我猜 pfSense 对端口 443 应用了一些特殊的魔法来限制管理员访问。您可以禁用此魔法,也可以执行很多更简单的选项,要么针对不同的端口或不同的 IP 运行 NAT。在这两种情况下,单独的端口可能要容易得多。假设您选择了 8443(为了与 Tomcat 服务器保持一致)。然后您可以通过https://my.domain.com:8443。
现在,尽管如此,你还是没有解释你在这里是如何解码 SSL 的。Varnish 不适用于 SSL 流量。因此,即使你让它工作了,它也不会起作用。所以你要么需要再补充一点你的解释,要么重新考虑/放弃使用 Varnish。我见过的一个常见解决方案是使用专用的 SSL 解码代理,比如磅,在 Varnish 前面。
另请参阅“为什么没有 SSL“Varnish 网站上的常见问题解答。