【发布时间】:2010-05-13 13:00:28
【问题描述】:
我在端口 X 上有一个 Web 服务端点和一个 http 连接器。 在某些时候,此端点需要切换到 https,但在同一个端口上! (我知道这不是正常的做事方式,但这是我的客户对他们正在使用的旧服务器的期望......)
有没有办法在tomcat中做到这一点?
【问题讨论】:
-
是时候获得一个新客户了!他们有什么理由这样做,还是只是“我们一直都是这样做的”?
我在端口 X 上有一个 Web 服务端点和一个 http 连接器。 在某些时候,此端点需要切换到 https,但在同一个端口上! (我知道这不是正常的做事方式,但这是我的客户对他们正在使用的旧服务器的期望......)
有没有办法在tomcat中做到这一点?
【问题讨论】:
这在 Tomcat 中是不可能的。HTTPS 连接器将只接受 SSL 连接。
我们内部开发了这样的代理。这并不难做到。您只需要检查第一个传入的数据包。寻找 SSL 握手的模式。我们只寻找 CLIENT_HELLO。弄清楚协议后,您可以相应地转发请求。
这真的很丑。如果可能的话,你不应该这样做。我们必须这样做,因为旧版客户端会这样做,而且不可能全部升级。
【讨论】:
有一种HTTPS升级,就是明文HTTP连接形成后,通过双方协商,升级为HTTP。你是这个意思吗?如果是这样,Tomcat 似乎不支持开箱即用,Java 也不支持开箱即用。您可能可以自己编写一个 Tomcat 连接器来完成它;在客户端你有一个更有趣的问题;-)
但我会问为什么?端口不会太贵以至于不能使用两个。
【讨论】:
您不需要在同一端口上运行 HTTP 和 HTTPS,在 server.xml 文件中配置 Tomcat 以将请求重定向到 HTTPS。
【讨论】:
我想知道为什么它们通常不在同一个端口上!这不是更容易吗?
原因可能是相关的 Java APIS (javax.net.ssl) 不允许这样做;你必须有不同的服务器套接字。有没有其他适用于 Java 的 SSL impls?我不知道。
【讨论】: