温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何在Tomcat中配置HTTPS

发布时间:2025-12-16 07:19:21 来源:亿速云 阅读:233 作者:小樊 栏目:系统运维

Tomcat 配置 HTTPS 实操指南

一 准备证书与密钥库

  • 证书格式与选择
    • JKS:Tomcat 传统格式,很多 CA 会提供 .jks 包。
    • PKCS12(.p12/.pfx):通用格式,Tomcat 也原生支持。若只有 PEM + KEY,可先合成 PKCS12 再导入。
  • 生成自签名证书用于测试(生产请使用受信任 CA)
    • 生成 JKS:
      • keytool -genkey -alias tomcat -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 365
    • 生成 PKCS12(如需):
      • keytool -importkeystore -srckeystore keystore.jks -destkeystore server.p12 -deststoretype PKCS12 -srcalias tomcat
  • 放置证书
    • 建议将证书放到 $CATALINA_HOME/conf/(如:conf/keystore.jks 或 conf/server.p12),便于管理与备份。

二 配置 server.xml 启用 HTTPS

  • HTTP 连接器保持正常,并将 redirectPort 指向 443(标准 HTTPS 端口),用于后续自动跳转。
  • 新增 HTTPS 连接器(推荐端口 443;测试可用 8443)。Tomcat 8.5+ 推荐使用 语法;Tomcat 9 也兼容传统 keystoreFile/keystorePass 写法。

示例 1(Tomcat 8.5+,JKS,推荐)

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="your.domain">
  <SSLHostConfig hostName="your.domain">
    <Certificate certificateKeystoreFile="conf/your_domain.jks"
                 certificateKeystorePassword="your_password"
                 type="RSA"/>
  </SSLHostConfig>
</Connector>

示例 2(Tomcat 9,PFX/PKCS12,传统写法)

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true"
           scheme="https" secure="true"
           keystoreFile="conf/server.pfx"
           keystorePass="your_password"
           clientAuth="false" sslProtocol="TLS"/>

示例 3(测试环境,端口 8443)

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true">
  <SSLHostConfig>
    <Certificate certificateKeystoreFile="conf/keystore.jks"
                 type="RSA"
                 certificateKeystorePassword="changeit"/>
  </SSLHostConfig>
</Connector>
  • 完成后重启 Tomcat 生效。

三 配置 HTTP 自动跳转 HTTPS

  • 方式一(推荐)在 conf/web.xml 的 之后添加:
<login-config>
  <auth-method>CLIENT-CERT</auth-method>
  <realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
  <web-resource-collection>
    <web-resource-name>SSL</web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>
</security-constraint>
  • 同时确保 HTTP 连接器的 redirectPort=“443”,这样访问 http:// 会被容器自动重定向到 https://。

  • 方式二 在前端反向代理(如 Nginx/Apache)上做 80→443 跳转,后端 Tomcat 仅开启 443。

四 进阶 双向认证(mTLS)

  • 准备客户端证书(由受信任 CA 签发),并在服务器创建 truststore(导入客户端 CA 或客户端证书)。
  • 修改 HTTPS Connector,启用客户端证书校验并指定信任库:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="200" SSLEnabled="true"
           scheme="https" secure="true"
           keystoreFile="conf/server.p12"
           keystorePass="server_pwd"
           clientAuth="true"
           truststoreFile="conf/server_truststore.p12"
           truststorePass="trust_pwd"
           sslProtocol="TLS"/>
  • 客户端需安装其证书与私钥,访问时携带证书完成双向校验。

五 验证与常见问题

  • 访问测试

    • 标准端口:打开浏览器访问 https://your_domain/(或 https://服务器IP/)。
    • 测试端口:访问 https://your_domain:8443/;若使用自签名证书,浏览器会提示不受信任(测试环境可临时信任)。
  • 常见问题排查

    • 端口与防火墙:确认 443/8443 已在系统防火墙与安全组放行;端口占用请更换端口或释放占用进程。
    • 证书与路径:核对 keystoreFile 路径、文件名与密码是否正确;证书域名与访问域名匹配(或测试用 IP 自签名)。
    • 协议与算法:建议启用 TLS,使用 RSA 2048+ 密钥长度;禁用不安全协议与弱套件(如 SSLv3、RC4)。
    • 外部反向代理:若由 Nginx/Apache 终止 TLS,Tomcat 侧可仅保留 HTTP 8080 并关闭 Connector 的 SSL,由代理处理证书与跳转。
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手