温馨提示×

温馨提示×

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

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

Java Tomcat中SSL证书如何配置

发布时间:2025-12-01 08:23:42 来源:亿速云 阅读:135 作者:小樊 栏目:编程语言

Java Tomcat 配置 SSL 证书实操指南

一 准备与前置检查

  • 证书与域名
    • 使用由权威 CA 签发的有效证书;确保证书覆盖所有需要保护的域名。
    • 域名匹配规则:example.com 仅匹配该精确域名;www.example.com 仅匹配该精确域名;*.example.com 仅匹配一级子域名(如 www.a.example.com),不匹配根域 example.com 与多级子域 a.b.example.com。如需匹配多级子域,需单独绑定或采用 *.b.example.com 这类通配符。
  • 服务器与网络
    • 具备 root 或 sudo 权限;在 Linux 上建议将证书放在 /etc/ssl/cert 等受控目录并设置仅 Tomcat 运行用户可读的权限。
    • 开放防火墙与安全组端口:建议启用 443(HTTPS 默认端口,访问无需加端口),如需同时保留 HTTP 则开放 80;如使用 8443 访问需显式带端口。
    • 中国内地服务器需完成 ICP 备案,域名 A 记录解析到服务器公网 IP。

二 准备证书文件

  • 获取并上传
    • 在证书控制台下载服务器类型为 Tomcat 的证书包,常见为 PFX/PKCS12(.pfx/.p12) 或 JKS(.jks),并附带包含密码的 .txt 文件。
    • 将证书与密码文件上传至服务器安全目录(如 /etc/ssl/cert),并设置严格权限(仅 Tomcat 运行用户可读)。
  • 证书格式选择
    • JKS:Java 专用密钥库,适合纯 Java 环境。
    • PFX/PKCS12:通用格式,跨平台支持更好,便于与非 Java 系统集成。

三 配置 Tomcat server.xml

  • HTTP 与 HTTPS 连接器
    • 将 HTTP Connector 的 redirectPort 指向 443,用于自动跳转。
    • 将 HTTPS Connector 监听 443(推荐)或 8443;生产建议使用 NIO 模式(如 org.apache.coyote.http11.Http11NioProtocol)。
  • 示例配置(按证书格式二选一)
    • PFX/PKCS12(Tomcat 9/8.5 推荐)
      <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                 maxThreads="150" SSLEnabled="true" maxParameterCount="1000">
        <SSLHostConfig>
          <Certificate certificateKeystoreFile="/etc/ssl/cert/domain_name.pfx"
                       certificateKeystorePassword="证书密码"
                       type="RSA" />
        </SSLHostConfig>
      </Connector>
      
    • JKS(Tomcat 9/8.5 推荐)
      <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                 maxThreads="150" SSLEnabled="true" maxParameterCount="1000">
        <SSLHostConfig>
          <Certificate certificateKeystoreFile="/etc/ssl/cert/domain_name.jks"
                       certificateKeystorePassword="证书密码"
                       type="RSA" />
        </SSLHostConfig>
      </Connector>
      
    • 旧版 Tomcat 7 兼容写法(示例为 PFX)
      <Connector port="443"
                 protocol="HTTP/1.1"
                 SSLEnabled="true"
                 scheme="https"
                 secure="true"
                 keystoreFile="/etc/ssl/cert/domain_name.pfx"
                 keystoreType="PKCS12"
                 keystorePass="证书密码"
                 clientAuth="false"
                 SSLProtocol="TLSv1.1+TLSv1.2+TLSv1.3"
                 ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CHA_SHA256"/>
      
    • 说明
      • 将示例中的路径与密码替换为实际值;如采用 JKS,请将 type=“RSA” 替换为 type=“JKS” 或使用旧式属性 keystoreType=“JKS”。
      • 如需使用 APR 模式,可将 protocol 改为 org.apache.coyote.http11.Http11AprProtocol。

四 可选配置与启动验证

  • 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>
    
  • 配置校验与启动
    • 在 Tomcat 安装目录/bin 执行:./catalina.sh configtest(Windows 执行 catalina.bat configtest),出现 Configuration file test successful 表示配置无误。
    • 重启 Tomcat,访问 https://your_domain/(端口 443 可省略),确认浏览器地址栏显示锁形图标。
  • 常见问题排查
    • 无法访问:确认 443/80 端口已在防火墙与安全组放行,且未被其他进程占用。
    • 证书不受信任:确保证书链完整(必要时在 server.xml 中配置 certificateChainFile),并使用受信任 CA 签发的证书。

五 进阶场景

  • 使用 PEM/CRT + KEY 文件(Tomcat 支持在 中直接指定证书、私钥与链)
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https">
      <SSLHostConfig sslProtocol="TLS">
        <Certificate certificateFile="/opt/ssl/server.crt"
                     certificateKeyFile="/opt/ssl/server.key"
                     certificateChainFile="/opt/ssl/root.crt"
                     type="RSA"/>
      </SSLHostConfig>
    </Connector>
    
  • 双向认证(mTLS)
    • 在 Connector 上设置 clientAuth=“true”,并通过 truststoreFile 指定信任库(包含可信任的客户端 CA 证书),用于校验客户端证书。
  • 自签名证书(仅测试/内网)
    • 使用 keytool 生成自签名证书用于测试环境,生产环境请使用受信任 CA 证书以避免浏览器安全警告。
向AI问一下细节

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

AI
助
手