Tomcatov redirectPort: omejitve HTTPS in povezovalniki
Datum objave:
Posodobljeno:
Tehnični članki > Tomcatov redirectPort: omejitve HTTPS in povezovalniki
Stanje in varna uporaba v letu 2026
Sklep: redirectPort določa, na katera vrata povezovalnik Tomcat brez TLS preusmeri zahtevo, kadar varnostna omejitev nameščene spletne aplikacije zahteva zaupni prenos. Sam ne ustvari povezovalnika TLS, ne vsili HTTPS za vsako zahtevo in ne nadomesti pravil preusmerjanja na obratnem posredniku.
Kaj boste izvedeli
- Kako
<transport-guarantee>CONFIDENTIAL</transport-guarantee>sproži preusmeritev, ki jo upravlja vsebnik. - Zakaj morajo ciljna vrata ustrezati delujočemu povezovalniku HTTPS ali pravilno zasnovani topologiji s posrednikom.
- Kako se neposredni TLS v Tomcatu razlikuje od zaključevanja TLS v strežniku Apache HTTP Server ali drugem posredniku.
Komu je članek namenjen? Skrbnikom spletnih aplikacij Java, ki preverjajo povezovalnike Tomcat in varnostne omejitve aplikacij.
Opomba za leto 2026: Spodnji primer za Tomcat 9 je še vedno uporaben za razumevanje koncepta, vendar morajo atributi povezovalnika in obravnava posrednika ustrezati podprti različici Tomcata. Zaupanja vredne glave posrednika nastavite premišljeno, da preprečite zanke preusmeritev in napačno zaznavanje protokola.
Varnostna opomba: Ukazi in konfiguracijski primeri iz prvotnega članka niso bili znova preizkušeni v sodobnem produkcijskem okolju. Pred uporabo v ločenem preizkusnem okolju preverite podprte različice, izdelajte varnostne kopije ter določite nadzor dostopa in postopek povrnitve.
Uradni viri
Pregled
Datoteka server.xml privzeto vsebuje atribut "redirectPort". V nadaljevanju je pojasnjeno, kdaj Tomcat to vrednost uporabi in katere dodatne nastavitve potrebuje.
Obravnavani primer povezovalnika:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Kazalo vsebine
1. Kaj je redirectPort
Atribut redirectPort se uporabi, kadar zahteva brez TLS ustreza varnostni omejitvi aplikacije, ki zahteva zaupni prenos.
Če datoteka server.xml vsebuje naslednji povezovalnik:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
lahko Tomcat zahtevo za "http://hoge:8080/hoge.html" preusmeri na "https://hoge:8443/hoge.html". To se ne zgodi pri vsaki zahtevi, temveč le, ko ustrezna varnostna omejitev zahteva zaupni prenos.
Zahtevo po zaupnem prenosu določite v datoteki web.xml z elementom <transport-guarantee>CONFIDENTIAL</transport-guarantee>, na primer:
~okrajšava~
<security-constraint>
<web-resource-collection>
<web-resource-name>twx-portal</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
</web-app>
Ker vzorec URL velja za vse poti aplikacije, omejitev za vsak ustrezen URL zahteva zaupni prenos. Tomcat nato uporabi redirectPort povezovalnika brez TLS. Ciljna vrata so uporabna le, če jih dejansko posluša povezovalnik TLS ali zaupanja vreden posrednik in so nastavitve protokola ter posredovanja med seboj usklajene.
1-1. Podlaga v dokumentaciji
Dokumentacija Tomcata to vedenje pojasnjuje takole:
http://tomcat.apache.org/tomcat-9.0-doc/ssl-howto.html
“If you change the port number here, you should also change the value specified for the redirectPort attribute on the non-SSL connector. This allows Tomcat to automatically redirect users who attempt to access a page with a security constraint specifying that SSL is required, as required by the Servlet Specification.”
Navedba se nanaša na zahtevo, ki ustreza varnostni omejitvi z zahtevanim zaupnim prenosom, kakršna je zgornja omejitev v datoteki web.xml. Atribut redirectPort sam po sebi ne prisili vseh zahtev aplikacije k uporabi HTTPS.
2. Povzetek
redirectPort nastavite skupaj s povezovalnikom TLS ali obratnim posrednikom. Nato preizkusite neposredne in posredovane zahteve, posredovane glave ter morebitne zanke preusmeritev.
Pri novejši različici Tomcata preverite tudi trenutno dokumentacijo za uporabljeno družino različic.