温馨提示×

debian tomcat怎么设https

小樊
37
2026-10-24 01:44:08
栏目: 智能运维

在 Debian 上给 Tomcat 配置 HTTPS,常见做法有两种:

  1. Tomcat 直接使用证书(推荐用于测试/内网)
  2. Nginx / Apache 做反向代理,Tomcat 走 HTTP(生产推荐)

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


一、准备环境

假设:

  • Debian 11/12
  • Tomcat 9/10(路径通常是 /opt/tomcat 或 /var/lib/tomcat9)
  • 已安装 openjdk

二、生成 SSL 证书(自签名示例)

cd /opt/tomcat/conf
keytool -genkeypair \
  -alias tomcat \
  -keyalg RSA \
  -keysize 2048 \
  -validity 365 \
  -keystore tomcat.keystore \
  -storepass changeit \
  -keypass changeit

按提示填写:

  • 名字:localhost(或你的域名)
  • 组织单位、组织、城市等随意

生成后会有:

/opt/tomcat/conf/tomcat.keystore

生产环境建议使用 Let’s Encrypt 证书(后面说)


三、修改 Tomcat 配置

编辑:

vim /opt/tomcat/conf/server.xml

找到并修改 Connector:

<Connector
    port="8443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="150"
    SSLEnabled="true">
    <SSLHostConfig>
        <Certificate
            certificateKeystoreFile="conf/tomcat.keystore"
            certificateKeystorePassword="changeit"
            type="RSA" />
    </SSLHostConfig>
</Connector>

保存后重启 Tomcat:

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

访问:

https://服务器IP:8443

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

编辑:

vim /opt/tomcat/conf/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>

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

Let’s Encrypt 给的是 PEM 证书,Tomcat 需要 PKCS12:

openssl pkcs12 -export \
  -in fullchain.pem \
  -inkey privkey.pem \
  -out tomcat.p12 \
  -name tomcat \
  -passout pass:changeit

server.xml 改成:

<Connector port="8443" protocol="HTTP/1.1"
           SSLEnabled="true">
  <SSLHostConfig>
    <Certificate certificateKeystoreFile="conf/tomcat.p12"
                 certificateKeystoreType="PKCS12"
                 certificateKeystorePassword="changeit" />
  </SSLHostConfig>
</Connector>

六、生产更推荐的方式(Nginx + Tomcat)

用户 → Nginx(HTTPS) → Tomcat(HTTP)

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

Tomcat 只开 8080,更安全、易维护。


七、常见问题

1. 端口被防火墙挡

ufw allow 8443

2. 浏览器提示不安全

自签名证书正常现象,生产请用 Let’s Encrypt。

3. Tomcat 启动失败

看日志:

tail -f /opt/tomcat/logs/catalina.out

如果你告诉我:

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

我可以直接给你一份可用配置。

0 踩