1

我有一个在 apache 虚拟主机后面运行的 tomcat 服务器(所以我可以在同一台服务器上使用多个域)。apache 所做的只是获取主机名并将请求转发到适当的 tomcat 服务器,然后由该服务器处理之后的所有事情。

我希望在其中一个域上设置 SSL,并且我了解如何执行此操作的过程,但我对是否应该允许 tomcat 处理所有 SSL 或 apache 感到困惑。

有什么区别?允许tomcat处理ssl有什么缺点吗?如果我让 apache 处理 ssl,当我访问 tomcat 应用程序时,我还会得到绿条、挂锁等吗?我对整个情况有点困惑。

我使用代理来处理 apache2 转发到正确的 tomcat 应用程序。如果我像这样设置代理:

<VirtualHost 1.2.3.4:443>
    ServerName host.domain.org

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    SSLEngine on
    SSLProxyEngine On
    SSLCertificateFile /etc/apache2/ssl/certificate.crt
    SSLCertificateKeyFile /etc/apache2/ssl/certificate.key

    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / https://localhost:8443/
    ProxyPassReverse / https://localhost:8443/
</VirtualHost>

我需要使用 https 和 8443 端口吗?这样做是不是我也必须在tomcat上设置SSL?或者我可以在tomcat的server.xml的连接器中使用以下内容

secure = false
scheme = https
proxyName = www.mydomain.com
proxyPort = 443

并且不用担心将tomcat连接到ssl键?这是通过apache2使用SSL保护tomcat应用程序的正确方法吗?

4

1 回答 1

0

您在提供的配置中声明的方式是,每个请求都有两个不同的 https 连接。从任何客户端到您的 apache 的第一名。Apache 将解密该请求并——为了转发它——与 tomcat 协商 SSL 连接。您必须以这种方式在两台机器上设置 https。

您可以使用 http 转发到 tomcat(通常是端口 8080)。但是,tomcat 可能没有看到您以这种方式使用 https(您必须尝试一下)。如果你使用 ajp,例如 mod_jk 或 mod_proxy_ajp,而不是 apache 和 tomcat 之间的 http,tomcat 肯定也会看到 https 连接。

你应该做什么取决于 Apache 和 tomcat 之间的距离——以及你对两者之间网络的信任程度。我会说在未加密的情况下运行此连接通常没有问题,但您的里程可能会有所不同。

在 apache 上处理 https 有什么好处?好吧,我假设 Apache 在会话协商和加密方面可能会更好地扩展 - 至少它将加密的东西卸载到不同的服务器上,允许 tomcat 做它最擅长的事情(服务应用程序)并让 Apache 处理所有奇怪的事情加密的东西。

我喜欢这种配置——通常你也可以通过 mod_rewrite、负载平衡等快速修复一些问题,这样额外的 apache 可以让你比“仅仅”一个 tomcat 更灵活。

于 2013-07-04T16:01:09.413 回答