温馨提示×

如何给debian tomcat配ssl

小樊
41
2026-09-12 09:32:33
栏目: 云计算

下面以 Debian + Tomcat(常见 9/10/11) 为例,说明如何配置 SSL(HTTPS)。你可以按需选择 自签名证书正式证书(如 Let’s Encrypt)


一、准备工作

1. 确认 Tomcat 已安装

systemctl status tomcat
# 或
systemctl status tomcat9

Tomcat 配置文件一般在:

/etc/tomcat9/server.xml

二、使用自签名证书(测试环境)

1. 生成 keystore(JKS)

keytool -genkeypair \
  -alias tomcat \
  -keyalg RSA \
  -keysize 2048 \
  -validity 365 \
  -keystore /etc/tomcat9/keystore.jks

按提示输入:

  • 密码(记住,后面要用)
  • 你的域名或 IP
  • 组织信息等

2. 修改 Tomcat 配置

编辑:

nano /etc/tomcat9/server.xml

找到并修改(或取消注释)Connector

<Connector
    port="8443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="150"
    SSLEnabled="true">
    <SSLHostConfig>
        <Certificate
            certificateKeystoreFile="/etc/tomcat9/keystore.jks"
            certificateKeystorePassword="你的密码"
            type="RSA" />
    </SSLHostConfig>
</Connector>

3. 重启 Tomcat

systemctl restart tomcat9

访问:

https://服务器IP:8443

三、使用 Let’s Encrypt(生产推荐)

1. 安装 certbot

apt update
apt install certbot

2. 申请证书(停用 Tomcat 的 80 端口)

certbot certonly --standalone -d www.example.com

证书位置:

/etc/letsencrypt/live/www.example.com/

3. 转换证书为 PKCS12(Tomcat 推荐)

openssl pkcs12 -export \
  -in fullchain.pem \
  -inkey privkey.pem \
  -out /etc/tomcat9/tomcat.p12 \
  -name tomcat

4. 配置 Tomcat

<Connector
    port="8443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    SSLEnabled="true">
    <SSLHostConfig>
        <Certificate
            certificateKeystoreFile="/etc/tomcat9/tomcat.p12"
            certificateKeystorePassword="导出的密码"
            certificateKeystoreType="PKCS12"
            type="RSA" />
    </SSLHostConfig>
</Connector>

5. 自动续期(可选)

certbot renew --dry-run

可在 renew-hook 中重启 Tomcat。


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

编辑:

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

五、常见问题

  • 端口被占用:确认 8443 未被占用
  • 证书密码错误:Tomcat 起不来,看日志
    journalctl -xe
    
  • 防火墙
    ufw allow 8443
    

如果你告诉我:

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

我可以给你精确到命令的配置方案

0