温馨提示×

如何配置Tomcat的SSL证书

小樊
37
2026-01-08 02:59:47
栏目: 云计算

Tomcat SSL证书配置步骤

一 准备与前置检查

  • 证书与文件
    • 确保证书已签发,且服务器上已准备好证书文件与密码文件。常见为 JKSPFX/PKCS12 格式;若下载包内是 PEM + 私钥,需先转换为 PFX 再导入为 JKS
  • 工具与环境
    • 安装 OpenSSL ≥ 1.0.1gJDK/Keytool(keytool通常随JDK提供)。
  • 端口与网络
    • 在服务器与云安全组放行 TCP 443;如为多台服务器承载同一域名,需在每台服务器部署同一证书。
  • 域名匹配
    • 访问域名必须与证书绑定的域名一致,否则浏览器会提示不安全。

二 准备证书文件 JKS 或 PFX

  • 场景A 系统生成CSR(下载包内含 Tomcat 目录)
    • 解压后从 Tomcat 目录获取 xxx_server.jkskeystorePass.txt(初始密码)。建议将 JKS 放到 Tomcat 安装目录的 cert/ 下,如:cert/server.jks
  • 场景B 自己生成CSR(下载包为 PEM)
    • PEM 文件通常包含两段证书(服务器证书与中间CA),与生成CSR时的 server.key 一起,用 OpenSSL 生成 PFX
      • 命令:openssl pkcs12 -export -out server.pfx -inkey server.key -in server.pem
      • 提示设置 PFX 导出密码 并妥善保存。
    • PFX 转换为 JKS(建议 JKS 与 PFX 密码保持一致,避免 Tomcat 启动失败):
      • 命令:keytool -importkeystore -srckeystore server.pfx -destkeystore server.jks -srcstoretype PKCS12 -deststoretype JKS
    • server.jks 与密码文件放入 cert/ 目录。

三 配置 server.xml

  • Tomcat 7 示例(使用 JKS)
    • 打开 conf/server.xml,启用并修改 8443 或改为 443 的 Connector,示例:
      <Connector port="443"
                 protocol="org.apache.coyote.http11.Http11Protocol"
                 maxThreads="150" SSLEnabled="true"
                 scheme="https" secure="true"
                 keystoreFile="cert/server.jks"
                 keystorePass="证书密码"
                 clientAuth="false" sslProtocol="TLS" />
      
    • 如密码中包含 &,需转义为 &
  • Tomcat 8.5/9 示例(推荐 NIO + SSLHostConfig)
    • 打开 conf/server.xml,启用并修改如下:
      <Connector port="443"
                 protocol="org.apache.coyote.http11.Http11NioProtocol"
                 maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
          <Certificate certificateKeystoreFile="cert/server.jks"
                       certificateKeystorePassword="证书密码"
                       type="RSA" />
        </SSLHostConfig>
      </Connector>
      
    • 如需使用 PFX 格式,可将 type 设为 PKCS12 并使用 certificateKeystoreType=“PKCS12”(部分发行包或版本支持直接在 SSLHostConfig 中使用 PFX)。
  • 可选 同时配置 HTTP→HTTPS 跳转
    • conf/web.xml 之后添加:
      <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 Connector 的 redirectPort=443

四 启动与验证

  • 启动
    • 执行 Tomcat 的 bin/shutdown.shbin/startup.sh(或系统服务方式)重启服务。
  • 验证
    • 访问 https://你的域名/(默认端口 443 可省略),浏览器显示锁标识即正常。
    • 若访问异常,先确认 443 端口已在服务器与云安全组放行,且证书域名与访问域名一致。

五 常见问题与排查

  • 启动失败或报密码错误
    • 核对 keystorePass 是否正确;若由 PFX 转换,确保 JKS 密码与 PFX 密码一致
  • 浏览器提示域名不匹配
    • 证书绑定的域名必须与访问域名完全一致(注意 example.comwww.example.com 为不同域名)。
  • 端口未开放导致无法访问
    • 在服务器防火墙与云安全组放行 TCP 443,并可用 nc/ss 等工具测试连通性。
  • 证书链不完整导致不受信任
    • 若使用 PEM 自生成 PFX,请确保 服务器证书 + 中间证书 均包含并正确排序后再转换。

0