[英]HTTP to HTTPS redirection issue with Tomcat 8
我正在嘗試在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/xyz
,其中xyz與安全約束相匹配(並且這里的任何xyz都應如此),Tomcat返回一個重定向,告訴您的瀏覽器/ etc使用https://host:50921/xyz
,並且自動執行; 您實際上看不到任何不同。
您不能在HTTPS端口上執行HTTP,反之亦然 ; 這就是HTTP和HTTPS連接器首先具有不同端口的原因。 如果嘗試在端口50915上執行HTTPS,則Tomcat將初始SSL握手消息(ClientHello)視為純文本HTTP請求,並且(當然)它是完全無效的HTTP請求,因此Error parsing HTTP request header
。 如果您嘗試在50921上執行HTTP,則Java SSL代碼會嘗試將HTTP請求作為ClientHello來處理,而該ClientHello根本不起作用,因此會引發異常,並在異常消息中實際顯示“可能的純文本”。 我不記得(並且目前無法測試)它在Tomcat日志中的外觀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.