我可以在端口443上安全地运行Tomcat,在8080上安全地运行Tomcat

时间:2010-08-24 22:59:19

标签: java tomcat ssl ssl-certificate tomcat6

让我解释一下我的情况。

目前,我在Tomcat 6上运行了很多应用程序,默认端口为8080。

我刚刚创建了一些需要登录的应用程序。我将购买一个SSL证书以便在此服务器上安装。

我不喜欢使用端口8443的想法,因为它使URL更复杂。 如果我在端口80上运行Tomcat,我必须更改几十个链接,我必须以root身份运行Tomcat(而不是tomcat)。

在端口8080上运行不安全的应用程序但是在端口443上安全运行是否有任何问题?

我想我的设置会有如下所示的网址:

  

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

     

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

这可能吗?

2 个答案:

答案 0 :(得分:37)

在8080上设置HTTP连接器,在8443上设置HTTPS连接器。在<Connector>声明中添加proxyPort属性并将其设置为默认HTTP和HTTPS端口(分别为80和443)。将防火墙重定向规则设置为80到8080以及443到8443.然后,服务器将接受常规的http和https URL,而无需指定端口号。

以下是这些连接器的示例声明。

<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'
/>

以下是一些重定向IPTABLES命令:

# 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

答案 1 :(得分:5)

是的,完全没问题。只需配置连接器即可使用相应的端口。但是对于443我猜测根也是必需的。