Tomcat 8的HTTP到HTTPS重定向问题

我正在尝试在Tomcat 8中将HTTP设置为HTTPS重定向。以下是配置web.xml

<security-constraint>

<web-resource-collection>

<web-resource-name>securedapp</web-resource-name>

<url-pattern>/*</url-pattern>

</web-resource-collection>

<auth-constraint />

<user-data-constraint>

<transport-guarantee>CONFIDENTIAL</transport-guarantee>

</user-data-constraint>

</security-constraint>

server.xml

<Connector executor="tomcatThreadPool"

port="50915"

protocol="org.apache.coyote.http11.Http11NioProtocol"

maxHttpHeaderSize="99999"

server=" Web"

keepAliveTimeout="90000"

maxKeepAliveRequests="-1"

acceptorThreadCount="40"

allowTrace="true"

redirectPort="50921" />

<Connector executor="tomcatThreadPool"

port="50921"

protocol="org.apache.coyote.http11.Http11NioProtocol"

maxHttpHeaderSize="99999"

SSLEnabled="true"

maxThreads="150"

scheme="https"

secure="true"

server="Web"

keepAliveTimeout="90000"

maxKeepAliveRequests="-1"

acceptorThreadCount="40"

allowTrace="true"

keystoreFile="/web/home/wb10d1/.keystore"

keystorePass="changeit"/>

Update#1我可以在配置的端口上通过http和http访问,没有任何问题:

http://hostname:50915/webapp

https://hostname:50921/webapp

但是当我尝试如下访问 https:// hostname:50915 / webapp

我希望Tomcat将其从为端口#50915配置的非SSL连接器重定向到为端口#50921配置的SSL连接器,但是它似乎无法正常工作。我看到的唯一错误是以下错误。

卡塔利娜

[#|INFO|2016-03-05 00:14:55.524+1000|1|org.apache.coyote.AbstractProtocol.start|Starting ProtocolHandler ["http-nio-50915"]|#]

[#|INFO|2016-03-05 00:14:55.536+1000|1|org.apache.coyote.AbstractProtocol.start|Starting ProtocolHandler ["http-nio-50921"]|#]

[#|INFO|2016-03-05 00:14:55.541+1000|1|org.apache.catalina.startup.Catalina.start|Server startup in 6831 ms|#]

[#|INFO|2016-03-05 00:15:33.254+1000|120|org.apache.coyote.http11.AbstractHttp11Processor.process|Error parsing HTTP request header

Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.|#]

我已经将“ -Djava.net.debug =

all”传递给了Java,但是除了上面的错误之外,它什么都没有提供。从以上错误中可以很清楚地看到,为什么没有分析标头。有没有办法获得更深层次的调试输出以帮助查明问题?

回答:

(对不起,延迟;最初我错过了链接请求。)

50915是此Tomcat上的HTTP端口,50921是HTTPS。当您浏览http://host:50915/xyzxyz与安全约束匹配的位置(这里任何xyz都应如此)时,Tomcat会返回一个重定向,告诉您的浏览器/

etc使用https://host:50921/xyz它,它会自动执行;您实际上看不到任何不同。

;这就是HTTP和HTTPS连接器首先具有不同端口的原因。如果尝试在端口50915上执行HTTPS,则Tomcat将初始SSL握手消息(ClientHello)视为纯文本HTTP请求,(当然)它是完全无效的HTTP请求,因此Error

parsing HTTP request header。如果您尝试在50921上执行HTTP,则Java

SSL代码会尝试将HTTP请求作为ClientHello来处理,而该ClientHello根本不起作用,因此会引发异常,并在异常消息中实际显示“可能的纯文本”。我不记得(并且目前无法测试)它在Tomcat日志中的外观。

以上是 Tomcat 8的HTTP到HTTPS重定向问题 的全部内容, 来源链接: utcz.com/qa/421105.html

回到顶部