温馨提示×

Debian Tomcat怎样开HTTPS

小樊
45
2026-09-15 15:54:24
栏目: 智能运维

在 Debian 上给 Tomcat 开启 HTTPS,通常有两种常见做法:

  1. Tomcat 自己跑 HTTPS(推荐学习/内部用)
  2. Nginx / Apache 反代 + TLS(生产推荐)

下面先讲 Tomcat 原生 HTTPS(最常用、最直接)。


一、准备环境

假设:

  • Debian 11/12
  • Tomcat 9/10(路径通常是 /var/lib/tomcat9/opt/tomcat
  • 使用 自签证书(生产请用 Let’s Encrypt)

二、生成 HTTPS 证书(keystore)

Tomcat 使用 JKSPKCS12 格式。

1️⃣ 生成 PKCS12 证书(推荐)

sudo keytool -genkeypair \
  -alias tomcat \
  -keyalg RSA \
  -keysize 2048 \
  -validity 365 \
  -storetype PKCS12 \
  -keystore /etc/tomcat9/keystore.p12 \
  -storepass changeit

提示信息随便填,但 名字和姓 建议写域名或 localhost


三、配置 Tomcat HTTPS

2️⃣ 编辑 server.xml

sudo nano /etc/tomcat9/server.xml

找到被注释的 HTTPS 配置,改成:

<Connector
    port="8443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="150"
    SSLEnabled="true"
    scheme="https"
    secure="true"
    keystoreFile="/etc/tomcat9/keystore.p12"
    keystorePass="changeit"
    keystoreType="PKCS12"
    clientAuth="false"
    sslProtocol="TLS" />

如果用 JKS,把 keystoreType 改成 JKS


四、重启 Tomcat

sudo systemctl restart tomcat9

访问:

https://服务器IP:8443

浏览器会提示“不安全”,这是正常的(自签证书)


五、(可选)HTTP 自动跳转 HTTPS

编辑 web.xml(应用或全局):

sudo nano /etc/tomcat9/web.xml

</web-app> 前加:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>HTTPS</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

六、生产环境建议(重要)

不要直接暴露 Tomcat 8443 ✅ 用 Nginx + Let’s Encrypt

示例 Nginx:

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

Tomcat 只跑 HTTP 8080 即可。


七、常见问题

❌ 启动失败

看日志:

sudo journalctl -u tomcat9

❌ 密码错误

确认 keystorePass 和生成时一致

❌ 端口被占用

8443443(需 root)


如果你告诉我:

  • Tomcat 版本
  • Debian 版本
  • 是否用域名 / 公网

我可以给你 精确配置一键脚本

0