簡體   English   中英

Tomcat 8的HTTP到HTTPS重定向問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM