2010-08-24 19 views
8

güvenli bir şekilde çalıştırabilir miyim? Durumumu açıklamama izin verin. ŞuTomcat'ı 443 numaralı bağlantı noktasında güvenli bir şekilde çalıştırabilir ve 8080

, ben uygulamaların bir sürü Sadece bir günlük gerekir bazı uygulamaları oluşturulan 8080

varsayılan bağlantı noktası üzerinde, Tomcat 6 üzerinde çalışan var. Ben yüklemek için bir SSL sertifikası satın alacağım bu sunucuda.

Bağlantı noktası 8443'ü kullanma fikrini beğenmedim çünkü URL'yi daha karmaşık hale getiriyor. Tomcat'i 80 numaralı bağlantı noktasında çalıştırırsam, düzinelerce bağlantıyı değiştirmem gerekirdi ve Tomcat'i root (tomcat yerine) olarak çalıştırmam gerekirdi.

8080 numaralı bağlantı noktasındaki güvenli olmayan uygulamaları çalıştıran, ancak güvenli çalışmayı 443 numaralı bağlantı noktasında çalıştıran bir sorun var mı?

http://mydomain.com:8080/report/controller?id=weather

https://mydomain.com/secure/controller?id=profile

bu mümkün mü:

benim kurulum şuna benzer URL'ler olacak hayal ediyorum?

+3

Eğer port 443 için root olarak Tomcat çalıştırmak zorunda değil mi? – erickson

cevap

5

Evet, kesinlikle sorun yok. Sadece ilgili portları kullanmak için konnektörleri yapılandırın. Ama 443 için kökü de gerekli olacağını tahmin ediyorum.

+0

Bir uyarı, eğer * nix üzerindeyseniz ve root olarak çalıştırılmıyorsa, sadece root, <1024 portlarına bağlanabilir, ancak bu konuda nasıl çalışılacağı konusunda dokümanlar bulmak zor olmamalıdır. – nos

+1

Normal olan şey bağlantı noktasına bağlanmak ve normal, minimal ayrıcalıklı bir kullanıcıya bırakmaktır. Tomcat'in nasıl kullanılacağını (öndeki Apache httpd olmadan) nasıl ayarlandığını bilmiyorum. –

36

8080 üzerindeki HTTP bağlacı ve 8443'teki HTTPS bağlacını ayarlayın. <Connector> bildiriminde proxyPort özniteliğini ekleyin ve varsayılan HTTP ve HTTPS bağlantı noktasına ayarlayın (sırasıyla 80 ve 443). Güvenlik duvarı yönlendirme kuralını 80'den 8080'e ve 443'ten 8443'e ayarlayın. Ardından sunucu, bağlantı noktası numaralarını belirtmeye gerek olmadan normal http ve https URL'lerini kabul edecektir.

Bu konektörlerin örnek bir açıklamasıdır.

<Connector 
    maxSpareThreads='75' 
    port='8080' 
    proxyPort='80' 
    enableLookups='false' 
    maxThreads='150' 
    connectionTimeout='20000' 
    disableUploadTimeout='true' 
    minSpareThreads='5' 
    maxHttpHeaderSize='8192' 
    redirectPort='443' 
    acceptCount='200' 
/> 

<Connector 
    SSLEnabled='true' 
    keystoreFile='/path/to/keystore.jks' 
    maxSpareThreads='75' 
    port='8443' 
    proxyPort='443' 
    algorithm='SunX509' 
    enableLookups='false' 
    secure='true' 
    maxThreads='150' 
    connectionTimeout='20000' 
    disableUploadTimeout='true' 
    scheme='https' 
    minSpareThreads='5' 
    maxHttpHeaderSize='8192' 
    sslProtocol='SSL' 
    acceptCount='200' 
    clientAuth='false' 
/> 

Ve burada bazı IPTABLES komutları yönlendirme şunlardır:

# Redirect external packets 
-A PREROUTING -j NAT-Port-Redirect 

# redirect http traffic 
-A NAT-Port-Redirect -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 
# redirect https traffic 
-A NAT-Port-Redirect -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8443 
+3

Poster, yukarıdaki cevabı bir cevap olarak işaretlemesine rağmen, çözümünüz çok daha iyi. –

+5

Harika ve temiz bir çözüm. Bunu Ubuntu'ya yönlendirmek için yaptım: iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443. – hsnm

+0

Yukarıdaki adımları takip ettim. Ama ben aldım Hata kodu: ERR_SSL_VERSION_OR_CIPHER_MISMATCH –

İlgili konular