温馨提示×

Debian怎么配置Tomcat证书

小樊
34
2026-07-21 17:00:46
栏目: 智能运维

在 Debian 上给 Tomcat 配置 HTTPS 证书,一般分为 使用自有证书(测试)使用 CA 证书(生产,如 Let’s Encrypt) 两种情况。下面给你一套完整、可操作的流程


一、环境说明

  • 系统:Debian 10 / 11 / 12
  • Tomcat:8.5 / 9 / 10(路径略有差异)
  • 假设 Tomcat 安装目录为:
/opt/tomcat

/var/lib/tomcat9

二、方式一:使用自签名证书(测试用)

1️⃣ 生成证书(JKS 格式)

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

2️⃣ 配置 Tomcat HTTPS(server.xml)

编辑:

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>

3️⃣ 重启 Tomcat

systemctl restart tomcat
# 或
/opt/tomcat/bin/restart.sh

访问:

https://服务器IP:8443

✅ 浏览器会提示不安全(正常)


三、方式二:使用 Let’s Encrypt 证书(推荐,生产)

1️⃣ 安装 certbot

apt update
apt install certbot -y

2️⃣ 申请证书

certbot certonly --standalone -d yourdomain.com

证书路径:

/etc/letsencrypt/live/yourdomain.com/

3️⃣ 将证书转为 JKS(Tomcat 需要)

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

4️⃣ 配置 server.xml

<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>

5️⃣ 自动续期(非常重要)

certbot renew --dry-run

加入定时任务:

crontab -e
0 3 * * * certbot renew --quiet && systemctl restart tomcat

四、可选:强制 HTTP 跳转 HTTPS

编辑 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>

五、常见问题

❌ Tomcat 启动失败

查看日志:

/opt/tomcat/logs/catalina.out

❌ 证书路径权限问题

chown -R tomcat:tomcat /opt/tomcat/conf/tomcat.jks

六、总结

场景 推荐方式
本地测试 自签名 JKS
生产环境 Let’s Encrypt + JKS
公网访问 必须 HTTPS

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

  • ✅ Tomcat 版本
  • ✅ Debian 版本
  • ✅ 是否使用 Nginx 反向代理

我可以给你 更精确的配置方案

0