温馨提示×

debian tomcat怎么配ssl

小樊
48
2026-09-18 13:58:45
栏目: 云计算

在 Debian 上给 Tomcat 配置 SSL(HTTPS) 通常有两种常见方式:

  1. Tomcat 直接使用证书(推荐用于测试/内部管理)
  2. Nginx / Apache 反代 + Tomcat(生产环境推荐)

下面先讲 Tomcat 原生配置 SSL(最常用)。


一、准备 SSL 证书

1️⃣ 使用自有证书(示例)

如果你已经有:

  • fullchain.pem
  • privkey.pem

先转成 Tomcat 需要的 PKCS12

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

设置导出密码(记住它)。


2️⃣ 或用 Java 自签证书(测试用)

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

二、配置 Tomcat SSL(Debian)

Tomcat 在 Debian 通常路径:

  • 配置目录:/etc/tomcat9/
  • 主配置:/etc/tomcat9/server.xml

编辑:

sudo nano /etc/tomcat9/server.xml

1️⃣ 注释掉原 HTTP Connector(可选)

<!--
<Connector port="8080" protocol="HTTP/1.1" ... />
-->

2️⃣ 添加 HTTPS Connector

使用 PKCS12

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

使用 JKS

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

三、权限 & 重启 Tomcat

sudo chown -R tomcat:tomcat /etc/tomcat9/ssl
sudo chmod 600 /etc/tomcat9/ssl/*
sudo systemctl restart tomcat9

访问:

https://服务器IP:8443

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

编辑:

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

五、生产环境推荐方案(重要)

Nginx + Tomcat

  • Nginx 处理 SSL
  • Tomcat 只跑 8080

示例 Nginx:

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

六、常见问题

java.io.IOException: Keystore was tampered → 密码错误或路径权限不对

❌ 浏览器不安全 → 自签证书需手动信任

❌ Debian 没 tomcat9

sudo apt install tomcat9

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

  • Debian 版本
  • Tomcat 版本
  • 用的是 Let’s Encrypt 还是自签

我可以给你 完全贴合你环境的配置

0