在 Debian 上给 Tomcat 配置 HTTPS 证书,一般分为 使用自有证书(测试) 和 使用 CA 证书(生产,如 Let’s Encrypt) 两种情况。下面给你一套完整、可操作的流程。
/opt/tomcat
或
/var/lib/tomcat9
keytool -genkeypair \
-alias tomcat \
-keyalg RSA \
-keysize 2048 \
-validity 365 \
-keystore /opt/tomcat/conf/tomcat.jks \
-storepass changeit
填写信息示例:
What is your first and last name?
[Unknown]: yourdomain.com
编辑:
vim /opt/tomcat/conf/server.xml
取消或添加如下内容:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="/opt/tomcat/conf/tomcat.jks"
certificateKeystorePassword="changeit"
type="RSA" />
</SSLHostConfig>
</Connector>
systemctl restart tomcat
# 或
/opt/tomcat/bin/restart.sh
访问:
https://服务器IP:8443
✅ 浏览器会提示不安全(正常)
apt update
apt install certbot -y
certbot certonly --standalone -d yourdomain.com
证书路径:
/etc/letsencrypt/live/yourdomain.com/
openssl pkcs12 -export \
-in /etc/letsencrypt/live/yourdomain.com/fullchain.pem \
-inkey /etc/letsencrypt/live/yourdomain.com/privkey.pem \
-out /opt/tomcat/conf/tomcat.p12 \
-name tomcat \
-passout pass:changeit
keytool -importkeystore \
-deststorepass changeit \
-destkeypass changeit \
-destkeystore /opt/tomcat/conf/tomcat.jks \
-srckeystore /opt/tomcat/conf/tomcat.p12 \
-srcstoretype PKCS12 \
-srcstorepass changeit
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
scheme="https"
secure="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="/opt/tomcat/conf/tomcat.jks"
certificateKeystorePassword="changeit"
type="RSA" />
</SSLHostConfig>
</Connector>
certbot renew --dry-run
加入定时任务:
crontab -e
0 3 * * * certbot renew --quiet && systemctl restart tomcat
编辑 web.xml:
<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>
查看日志:
/opt/tomcat/logs/catalina.out
chown -R tomcat:tomcat /opt/tomcat/conf/tomcat.jks
| 场景 | 推荐方式 |
|---|---|
| 本地测试 | 自签名 JKS |
| 生产环境 | Let’s Encrypt + JKS |
| 公网访问 | 必须 HTTPS |
如果你愿意,可以告诉我:
我可以给你 更精确的配置方案。