Java 同一端口上的Tomcat Http和Https

Java 同一端口上的Tomcat Http和Https,java,http,tomcat,https,Java,Http,Tomcat,Https,我在端口X上有一个web服务端点和一个http连接器。 在某些情况下,此端点需要切换到https,但在同一端口上! (我知道这不是正常的做法,但这是我的客户对他们使用的旧服务器的期望…) 有没有办法在tomcat中执行此操作?您不需要在同一端口上运行HTTP和HTTPS,请将tomcat配置为将请求重定向到server.xml文件中的HTTPS。这在tomcat中是不可能的。HTTPS连接器只接受SSL连接 我们已经在内部开发了这样一个代理。这并不难做到。您只需要检查第一个传入的数据包。寻找SS

我在端口X上有一个web服务端点和一个http连接器。 在某些情况下,此端点需要切换到https,但在同一端口上! (我知道这不是正常的做法,但这是我的客户对他们使用的旧服务器的期望…)


有没有办法在tomcat中执行此操作?

您不需要在同一端口上运行HTTP和HTTPS,请将tomcat配置为将请求重定向到server.xml文件中的HTTPS。

这在tomcat中是不可能的。HTTPS连接器只接受SSL连接

我们已经在内部开发了这样一个代理。这并不难做到。您只需要检查第一个传入的数据包。寻找SSL握手的模式。我们只找客户。一旦确定了协议,就可以相应地转发请求


这真难看。如果可能的话,你不应该这么做。我们必须这样做,因为传统客户端会这样做,而且不可能全部升级。

我想知道为什么它们通常不在同一个端口上!那不是更容易吗


原因可能是相关的JavaAPI(javax.net.ssl)不允许这样做;您必须有不同的服务器套接字。是否有其他针对Java的SSL impl?我不知道有什么。

有一种东西叫做HTTPS升级,即明文HTTP连接在形成后通过双方协议升级到HTTP。这就是你的意思吗?如果是这样,Tomcat似乎不支持开箱即用,Java也不支持开箱即用。您可能可以为自己编写一个Tomcat连接器来实现这一点;在客户端,您有一个更有趣的问题;-)


但我会问为什么?端口并不贵到不能使用两个。

是时候获得一个新的客户端了!他们对此有什么理由吗,或者只是“我们一直都是这样做的”?