【问题标题】:Tomcat from 8443 to 443Tomcat 从 8443 到 443
【发布时间】:2020-08-31 15:42:17
【问题描述】:

我在 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/ 时,我会收到“此网页不可用”的消息

【问题讨论】:

    标签: java tomcat ssl tomcat7 tomcat8


    【解决方案1】:

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

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

    当然第一步是把你Tomcat的server.xml中的端口改为443

    使用 Authbind 解决

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

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

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

    AUTHBIND=true
    

    并为此创建一个新文件:

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

    使用 setcap 求解

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

    sudo setcap cap_net_bind_service=+ep /path/to/binary
    

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          【解决方案4】:

          需要 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/

          【讨论】:

            【解决方案5】:

            想在@icza 的回答中添加更多内容(因为我是新手,所以无法发布 cmets)

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

            authbind --deep ./eclipse
            

            因为 Eclipse 不关心 authbind,否则

            【讨论】:

              猜你喜欢
              • 2012-07-24
              • 2020-09-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-01-08
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多