温馨提示×

Debian Tomcat如何开启SSL

小樊
38
2026-08-31 07:06:39
栏目: 云计算

下面分 Debian 系统 + Apache Tomcat 的通用做法,介绍如何开启 SSL/HTTPS。步骤适用于 Tomcat 8/9/10,Debian 10/11/12 都类似。


一、准备 SSL 证书

方式 1:使用 Let’s Encrypt(推荐,生产环境)

sudo apt update
sudo apt install certbot

生成证书(假设域名是 example.com):

sudo certbot certonly --standalone -d example.com

证书路径通常为:

/etc/letsencrypt/live/example.com/
├── fullchain.pem
└── privkey.pem

方式 2:使用自签名证书(测试用)

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

二、转换证书(Let’s Encrypt → Tomcat 可用格式)

Tomcat 默认使用 PKCS12JKS

sudo openssl pkcs12 -export \
  -in /etc/letsencrypt/live/example.com/fullchain.pem \
  -inkey /etc/letsencrypt/live/example.com/privkey.pem \
  -out /etc/tomcat9/keystore.p12 \
  -name tomcat \
  -passout pass:changeit

三、配置 Tomcat SSL(server.xml)

编辑配置文件:

sudo nano /etc/tomcat9/server.xml

1️⃣ 启用 HTTPS Connector

找到或添加:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150"
           SSLEnabled="true"
           scheme="https"
           secure="true">
    <SSLHostConfig>
        <Certificate certificateKeystoreFile="/etc/tomcat9/keystore.p12"
                     certificateKeystorePassword="changeit"
                     certificateKeystoreType="PKCS12"
                     type="RSA" />
    </SSLHostConfig>
</Connector>

✅ 端口建议使用 8443(测试)或 443(生产)


2️⃣(可选)改成 443 端口(生产)

<Connector port="443" ...

并确保 Tomcat 有权限(Debian 下建议用 authbind 或 Nginx 反代)


四、重启 Tomcat

sudo systemctl restart tomcat9

检查状态:

sudo systemctl status tomcat9

五、测试 HTTPS

浏览器访问:

https://example.com:8443

或(若使用 443):

https://example.com

六、强制 HTTP 跳转 HTTPS(可选)

编辑 web.xml

sudo nano /etc/tomcat9/web.xml

</web-app> 前添加:

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

七、推荐架构(生产环境)

Tomcat + Nginx(更稳)

用户 → Nginx (SSL) → Tomcat (HTTP 8080)

这样:

  • SSL 由 Nginx 处理
  • Tomcat 不用直接暴露
  • 证书续期简单

八、常见问题

问题 原因
8443 无法访问 防火墙未放行
证书不信任 自签名证书
Tomcat 启动失败 keystore 路径或密码错误

如果你愿意,可以告诉我:

  • ✅ Tomcat 版本
  • ✅ Debian 版本
  • ✅ 是否已安装 Nginx
  • ✅ 是正式域名还是内网环境

我可以直接给你一套 完全适配你环境的配置方案

0