下面分 Debian 系统 + Apache Tomcat 的通用做法,介绍如何开启 SSL/HTTPS。步骤适用于 Tomcat 8/9/10,Debian 10/11/12 都类似。
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
sudo keytool -genkeypair \
-alias tomcat \
-keyalg RSA \
-keysize 2048 \
-storetype PKCS12 \
-keystore /etc/tomcat9/keystore.p12 \
-validity 365
Tomcat 默认使用 PKCS12 或 JKS。
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
编辑配置文件:
sudo nano /etc/tomcat9/server.xml
找到或添加:
<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(生产)
<Connector port="443" ...
并确保 Tomcat 有权限(Debian 下建议用 authbind 或 Nginx 反代)
sudo systemctl restart tomcat9
检查状态:
sudo systemctl status tomcat9
浏览器访问:
https://example.com:8443
或(若使用 443):
https://example.com
编辑 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)
这样:
| 问题 | 原因 |
|---|---|
| 8443 无法访问 | 防火墙未放行 |
| 证书不信任 | 自签名证书 |
| Tomcat 启动失败 | keystore 路径或密码错误 |
如果你愿意,可以告诉我:
我可以直接给你一套 完全适配你环境的配置方案。