7

我在 tomcat 8 上启动了 spring MVC Web 应用程序。

我已经为 SSL 授权创建了证书。我有这样的我在 server.xml 中配置

<Connector SSLEnabled="true" 
  keystoreFile="ks.p12" 
  keystoreType="pkcs12" 
  keystorePass="*****"
  port="8443"
  scheme="https"
  secure="true" 
  sslProtocol="TLS"/> 

好的。现在一切正常!

但是如何在 443 端口上启动服务器?当我尝试使用 open https://dev-sp.ge/ 时,我收到消息“此网页不可用”

在此处输入图像描述

4

5 回答 5

9

在 unix 系统中,使用 1024 以下的端口通常需要特殊的权限或权限。

您的 Tomcat 使用端口8443,因为它不在“受保护”端口范围内。

当然,第一步是将端口更改为443Tomcat 的server.xml.

使用 Authbind 解决

允许 Tomcat 使用 443 或 80 端口的一种方法是使用Authbind

authbind 允许不以或不应以 root 身份运行的程序以受控方式绑定到低编号端口。

低于 1024 的端口必须在: 中启用/etc/default/tomcat8。添加以下行:

AUTHBIND=true

并为此创建一个新文件:

sudo touch /etc/authbind/byport/443
sudo chown tomcat8 /etc/authbind/byport/443
sudo chmod 500 /etc/authbind/byport/443

使用 setcap 求解

解决此问题的另一种方法是允许可执行二进制文件绑定到可以使用setcapunix 命令启用的受限端口:

sudo setcap cap_net_bind_service=+ep /path/to/binary
于 2014-09-09T11:45:38.003 回答
6

对我有用的解决方案:将 443 个请求重定向到 8443。

iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443

使用 ( /sbin/) iptables-save(以 root 身份)使更改永久生效。

于 2015-05-04T09:09:13.223 回答
1

PREROUTING 对我不起作用。我通过以下方式成功实现了这一目标:

sudo iptables -t nat -A OUTPUT -o lo -p tcp --dport 443 -j REDIRECT --to 8443

sudo /sbin/iptables-save (使其永久化)

于 2019-05-08T21:44:13.490 回答
0

需要 MacOSX >= Yosemite。

添加:

echo "
rdr pass inet proto tcp from my-domain.com to my-domain.com port 443 -> 127.0.0.1 port 9443
" | sudo pfctl -ef -

或者:

echo "
rdr pass inet proto tcp from any to any port 443 -> 127.0.0.1 port 9443
" | sudo pfctl -ef -

列表:

sudo pfctl -s nat

消除:

sudo pfctl -F all -f /etc/pf.conf

https://salferrarello.com/mac-pfctl-port-forwarding/

于 2016-08-22T10:08:50.347 回答
0

喜欢在@icza 的答案中添加更多内容(因为我是新手,所以无法发表评论)

如果您在 Eclipse 中运行 Tomcat 服务器,请使用

authbind --deep ./eclipse

因为 Eclipse 不关心 authbind 否则

于 2019-06-28T08:29:02.930 回答