Tomcat SSL(HTTPS)完整配置教程

Tomcat 配置 SSL 后,就能用 https:// 域名 安全访问,支持加密传输。我给你最简单、最实用、生产环境可用的两种方案:
  1. JKS 证书(自带 keytool 生成,测试用)
  2. PFX 证书(阿里云 / 腾讯云 / Let’s Encrypt 申请,正式环境用)
配置文件都是:conf/server.xml

一、先看最终效果(配置完长这样)

xml
<Connector
    port="443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="150"
    SSLEnabled="true"
    scheme="https"
    secure="true"
    keystoreFile="conf/localhost.jks"   <!-- 证书文件 -->
    keystorePass="123456"               <!-- 证书密码 -->
    sslProtocol="TLS"
    clientAuth="false"
/>

二、方案 1:测试环境 SSL(自签名证书,5 分钟搞定)

适合本地开发、测试使用。

1. 生成证书

进入 Tomcat 的 conf 目录,执行命令:
bash
运行
keytool -genkey -alias tomcat -keyalg RSA -keystore localhost.jks -validity 3650
按提示输入:
  • 密码:123456
  • 其他信息一路回车即可
最终在 conf 下生成:localhost.jks

2. 配置 server.xml

找到 8443 那段 Connector,替换成:
xml
<Connector
    port="443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="150"
    SSLEnabled="true"
    scheme="https"
    secure="true"
    keystoreFile="conf/localhost.jks"
    keystorePass="123456"
    keystoreType="JKS"
    sslProtocol="TLS"
/>

3. 重启 Tomcat 即可访问

plaintext
https://localhost

三、方案 2:生产环境 SSL(阿里云 / 腾讯云 PFX 证书)

企业正式环境 99% 用这种!

1. 准备证书

从证书服务商下载 Tomcat 版证书,得到:
  • xxx.pfx(证书文件)
  • 密码.txt(证书密码)
xxx.pfx 放到 Tomcat/conf/

2. 配置 server.xml(最标准写法)

xml
<Connector
    port="443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="150"
    SSLEnabled="true"
    scheme="https"
    secure="true"

    keystoreFile="conf/你的证书.pfx"
    keystoreType="PKCS12"
    keystorePass="证书密码"

    sslProtocol="TLS"
    clientAuth="false"
/>

3. 重启 Tomcat

plaintext
https://你的域名

四、必做:HTTP 自动跳转 HTTPS(非常重要)

让用户访问 http:// 自动跳 https://

1. 打开 conf/web.xml

在文件最后 </web-app> 前面添加:
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>

2. 确保 8080 端口配置 redirectPort="443"

xml
<Connector port="8080" redirectPort="443" />
完成后:

访问 http://域名 → 自动跳 https://域名


五、SSL 配置常见问题

  1. 端口 443 无法启动

    Linux 需要 root 权限(1024 以下端口需要管理员)

  2. 浏览器提示不安全

    自签名证书会提示,必须用正规 CA 证书(阿里云免费证书即可)

  3. 证书路径错误

    用相对路径:conf/xxx.pfx

    或绝对路径:D:/tomcat/conf/xxx.pfx

  4. 密码错误

    PFX 密码在下载的密码文件里,不要手动输错


六、最简单的完整模板(直接复制)

xml
<!-- HTTP 自动跳转 HTTPS -->
<Connector port="80" redirectPort="443" />

<!-- HTTPS SSL 配置 -->
<Connector
    port="443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="200"
    SSLEnabled="true"
    scheme="https"
    secure="true"
    keystoreFile="conf/cert.pfx"
    keystoreType="PKCS12"
    keystorePass="123456"
    sslProtocol="TLS"
/>

总结

  • Tomcat SSL 配置文件:conf/server.xml
  • 测试用:JKS 证书
  • 生产用:PFX 证书(PKCS12)
  • 必须开启:HTTP 自动跳转 HTTPS
  • 正式端口:443
上一篇 Linux命令——利用 du -sh 命令查看磁盘使用文件大小信息
下一篇 大学教师上课台式电脑用的云桌面,更换显卡还是卡怎么办,服务器正常