【问题标题】:Can I run Tomcat securely on port 443 and insecurely on 8080我可以在端口 443 上安全地运行 Tomcat 而在 8080 上不安全地运行 Tomcat
【发布时间】:2011-04-03 11:08:30
【问题描述】:

让我解释一下我的情况。

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

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

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

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

我想象我的设置会有如下所示的 URL:

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

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

这可能吗?

【问题讨论】:

  • 您不需要以 root 身份运行 Tomcat 以访问 443 端口吗?

标签: java tomcat ssl ssl-certificate tomcat6


【解决方案1】:

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

【讨论】:

  • 一个警告是,如果您在 *nix 上并以非 root 身份运行,因为只有 root 可以绑定到端口
  • 通常的做法是绑定到端口,然后放到一个普通的、最低权限的用户。不知道如何设置 Tomcat 来处理这个问题(前面没有 Apache httpd)。
【解决方案2】:

在 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

【讨论】:

  • 虽然发帖者将上面的回复标记为答案,但您的解决方案要好得多。
  • 伟大而干净的解决方案。我这样做是为了在 Ubuntu 上重定向: iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443。
  • 我按照上述步骤操作。但我得到错误代码:ERR_SSL_VERSION_OR_CIPHER_MISMATCH
  • @arulraj.net。您可能需要更高级的 SSL 配置。阅读有关 SSL 支持的 Tomcat 文档。如果您收到此错误,则意味着至少您的客户端和服务器正在连接端口 443。
  • 完美。正是我需要的:D
猜你喜欢
  • 2014-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-16
  • 2018-01-13
  • 2013-10-24
  • 1970-01-01
  • 2021-08-01
相关资源
最近更新 更多