Untuk apa port redirect di Tomcat?

13

Sulit untuk memahami dokumentasi kucing jantan dan melihat ke server.xml Anda akan menemukan salad port yang mungkin sulit dimengerti karena tidak benar-benar dijelaskan dengan benar, atau luas, dalam dokumentasi.

Misalnya, baris ini di file konfigurasi server.xml

<Connector port="8345" protocol="AJP/1.3" redirectPort="9875" />

Dan di sini Anda dapat menemukan port redirect lain:

<Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" /> 

Saya mengerti apa yang dilakukan port konektor. Dalam kasus pertama Anda menggunakannya untuk membuat pekerja di apache dan mengirimkannya di sana, di kedua Anda membuka port untuk mengakses kucing jantan secara langsung. Namun ketika datang ke redirectport hal menjadi kabur.

Berikut adalah penjelasan yang diberikan oleh dokumentasi tomcat untuk port ajp:

Jika Konektor ini mendukung permintaan non-SSL, dan permintaan diterima yang cocok memerlukan transportasi SSL, Catalina akan secara otomatis mengarahkan permintaan ke nomor port yang ditentukan di sini.

Saya selalu memilih port redirect acak lebih dari 1024 dan berfungsi,

Tetapi kapan ini akan dipraktikkan? Bagaimana cara mengetahui saat permintaan membutuhkan transportasi SSL?

Saya memiliki server satelit yang menjalankan modul kucing jantan. Modul ini mulai berlaku dengan mengarahkan lalu lintas ke konektor ajp dengan apache dari server utama dan sebaliknya.

Di server utama https diberlakukan di apache. Apakah ini berarti semua permintaan dikirim ke server satelit yang dienkripsi atau dalam teks biasa? Saya tahu bahwa jika saya mengakses server satelit melalui port 8080 itu tidak dienkripsi, tapi saya bertanya-tanya apakah ini berlaku untuk lalu lintas yang dialihkan ke server utama juga dan di mana port redirect ini mulai berlaku.

Ulukai
sumber

Jawaban:

5

Seperti yang didefinisikan dalam dokumentasi, port redirect akan muncul ketika permintaan SSL akan datang ke server dan karena port konektor http tidak dapat menangani permintaan SSL, itu akan mengarahkan ke port yang ditentukan. Tetapi mereka harus bagian lain yang ditentukan dalam file server.xml di mana port redirect yang ditentukan akan bertindak sebagai port konektor untuk menangani permintaan SSL. Misalnya, Jika Anda ingin agar permintaan http ditangani oleh port 80 dan https request by port 443 server.xml akan terlihat seperti ini:

<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />

<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true" scheme="https" secure="true" sslProtocol="TLS" keystoreFile="/path/to/kestorefile" keystorePass="my_keystore_password"/>

Keystorefile adalah sertifikat ssl situs web Anda.

Jika Anda tidak mengonfigurasi bagian lain dengan port pengalihan sebagai port konektor permintaan Anda tidak akan dialihkan ke port itu. Misalnya, jika situs web tidak mendukung permintaan ssl dan Anda mencoba mengirim permintaan https ke situs web itu, kesalahan seperti Secure Connection Failed akan ditampilkan di browser.

Gaurav Pundir
sumber
Cukup adil. Bagaimana dengan konfigurasi untuk ajp yang bertentangan dengan http? Juga apakah itu ide yang baik untuk menggunakan port di bawah 1024 seperti yang Anda sebutkan? Itu berarti menjalankan kucing jantan sebagai root dan itu tidak baik.
Ulukai
1
Saya tidak punya banyak gagasan tentang ajp, tetapi pengalihan harus bekerja sama dengan http. Tentang menggunakan port di bawah 1024, sepenuhnya terserah Anda. 80 dan 443 adalah port default untuk protokol https & https, tidak perlu menyebutkannya secara eksplisit di url. Jika Anda ingin menggunakan port non standar, terserah Anda. Juga menjalankan kucing jantan dengan root, itu tergantung pada aplikasi yang digunakan. Jika Anda tidak mempercayai aplikasi Anda dengan perspektif keamanan, Anda tidak boleh menjalankan kucing jantan dengan root. Cara lain adalah Anda dapat menggunakan apache atau nginx sebagai proxy untuk dijalankan pada port 80 & 443 dan mengarahkan permintaan Anda ke kucing jantan tersebut.
Gaurav Pundir
Saya akan perhatikan bahwa ini iptablesjuga berfungsi dengan baik untuk mengarahkan lalu lintas ke Tomcat, di antara beberapa pendekatan lainnya .
SeldomNeedy
Penjelasan ini tidak lengkap. Jika Anda mengalihkan dari non-SSL ke port SSL, itu tidak cukup untuk memasukkan konektor target di server.xml. Anda juga perlu mengkonfigurasi bagian <security-constraint> di web.xml. Lihat stackoverflow.com/questions/9526425/…
luiscolorado