首页主机资讯Ubuntu Tomcat SSL证书配置方法

Ubuntu Tomcat SSL证书配置方法

时间2026-01-19 00:10:04发布访客分类主机资讯浏览574
导读:Ubuntu 上 Tomcat 启用 SSL 证书的标准做法 一 准备证书与选择存储格式 自签名证书(仅测试) 生成私钥与证书:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2...

Ubuntu 上 Tomcat 启用 SSL 证书的标准做法


一 准备证书与选择存储格式

  • 自签名证书(仅测试)
    • 生成私钥与证书:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/tomcat-selfsigned.key -out /etc/ssl/certs/tomcat-selfsigned.crt
  • CA 签发证书(生产推荐)
    • 常见文件:certificate.crt(服务器证书)、private.key(私钥)、ca_bundle.crt(中间证书链)
    • 合并为 PKCS#12(推荐直接使用,无需再转 JKS):
      • openssl pkcs12 -export -in certificate.crt -inkey private.key -out keystore.p12 -name tomcat -cafile ca_bundle.crt -caname root -chain
    • 说明:Tomcat 支持 PKCS#12,可直接作为 keystore 使用,避免不必要的 JKS 转换与潜在错误。

二 配置 Tomcat 的 HTTPS 连接器

  • 文件路径:编辑 /etc/tomcat9/server.xml(Tomcat 8.5/9 语法)
  • 推荐做法(PKCS#12)
    • 将生成的 keystore.p12 放到例如 /etc/ssl/private/keystore.p12
    • 在 内添加或修改 :
      <
          Connector port="443" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
                 maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="your.domain">
          
        <
          SSLHostConfig hostName="your.domain">
          
          <
          Certificate certificateKeystoreFile="/etc/ssl/private/keystore.p12"
                       certificateKeystorePassword="YourP12Password"
                       certificateKeyAlias="tomcat"
                       type="RSA"/>
          
        <
          /SSLHostConfig>
          
      <
          /Connector>
          
      
    • 说明:端口 443 为默认 HTTPS 端口;如仅测试可用 8443。证书链需包含在 PKCS#12 中(通过 -cafile 导入)。
  • 备选做法(JKS,适用于已有 JKS 的场景)
    <
        Connector port="443" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
               maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="your.domain">
        
      <
        SSLHostConfig hostName="your.domain">
        
        <
        Certificate certificateKeystoreFile="conf/ssl/yourdomain.jks"
                     certificateKeystorePassword="YourJKSPassword"
                     type="RSA"/>
        
      <
        /SSLHostConfig>
        
    <
        /Connector>
        
    
    • 说明:Tomcat 8.5/9 使用 与 Certificate 子元素;旧写法(keystoreFile/keystorePass 直接写在 Connector 上)已不推荐。

三 强制 HTTP 跳转 HTTPS

  • 应用层约束(推荐,通用)
    • /etc/tomcat9/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(或你的 HTTPS 端口)。
  • Valve 方式(可选,需前置反向代理或正确 RemoteIp 配置)
    • 在 内添加:
      <
          Valve className="org.apache.catalina.valves.RemoteIpValve"
             remoteIpHeader="x-forwarded-for"
             protocolHeader="x-forwarded-proto"/>
          
      <
          Valve className="org.apache.catalina.valves.HttpRedirectValve"
             scheme="https" secure="true" port="443"/>
          
      
    • 说明:若 Tomcat 前有反向代理(如 Nginx/Apache)处理 TLS,请优先在代理层跳转,减少 Tomcat 端复杂度。

四 启动与验证

  • 重启服务:sudo systemctl restart tomcat9
  • 访问验证
    • 直接访问:https://your_domain_or_ip/(若使用 443 可直接用域名)
    • 自签名证书浏览器会提示不受信任;CA 证书应显示锁标识且链完整。
  • 常见问题排查
    • 证书链不完整:确保 ca_bundle.crt 已合并进 PKCS#12(生成时加 -cafile)
    • 端口未放行:sudo ufw allow 443/tcp(或你的 HTTPS 端口)
    • 权限问题:确保 keystore.p12tomcat 运行用户可读(如 640,属 tomcat:tomcat)
    • 配置未生效:检查 server.xml 中 Connector 是否被注释;确认 的 hostName 与访问域名匹配(或使用通配/默认)。

五 进阶 双向认证 mTLS(可选)

  • 准备客户端证书(由同一 CA 签发),并在服务器端配置信任库:
    <
        Connector port="443" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
               maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="your.domain">
        
      <
        SSLHostConfig hostName="your.domain">
        
        <
        Certificate certificateKeystoreFile="/path/server.p12"
                     certificateKeystorePassword="serverpass"
                     certificateKeyAlias="tomcat"
                     type="RSA"/>
        
        <
        Certificate certificateKeystoreFile="/path/truststore.p12"
                     certificateKeystorePassword="trustpass"
                     type="RSA"
                     truststore="true"/>
        
      <
        /SSLHostConfig>
        
    <
        /Connector>
        
    
  • 关键属性:设置 clientAuth=“true”,并指定 truststoreFile/truststorePass 指向存放客户端 CA 的信任库;客户端需安装其证书与私钥以完成握手。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu Tomcat SSL证书配置方法
本文地址: https://pptw.com/jishu/784960.html
Ubuntu Tomcat更新和维护指南 Ubuntu Tomcat应用部署步骤

游客 回复需填写必要信息