温馨提示×

温馨提示×

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

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

Tomcat如何支持HTTP/2协议

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

Tomcat支持HTTP/2的要点与步骤

一 前提条件

  • Tomcat版本:建议使用Tomcat 9/10(Tomcat自**8.5+**起支持HTTP/2)。
  • JDK版本JDK 8+;HTTP/2基于TLS并依赖ALPN协商,JDK 8需确保有ALPN支持(或升级到JDK 9+)。
  • 必须使用HTTPS:浏览器与HTTP/2要求TLS 1.2+,推荐TLS 1.3
  • 证书:准备受信任的证书(生产用CA签发;本地开发可用工具生成本地CA与证书)。

二 两种启用方式与配置示例

  • 方式一 NIO + OpenSSL(通用、易上手)

    1. 生成证书(本地开发推荐mkcert
      • 安装本地CA:mkcert -install
      • 生成本地证书:mkcert localhost(生成localhost-key.pem与localhost.pem)
    2. 转换为Java可用密钥库
      • PEM转PKCS12:openssl pkcs12 -export -inkey localhost-key.pem -in localhost.pem -out localhost.p12
      • PKCS12转JKS:keytool -importkeystore -srckeystore localhost.p12 -srcstoretype PKCS12 -destkeystore localhost.jks
    3. 配置server.xml(关键点是添加UpgradeProtocol
      <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                 maxThreads="150" SSLEnabled="true">
          <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
          <SSLHostConfig>
              <Certificate certificateKeystoreFile="conf/localhost.jks"
                           certificateKeystorePassword="你的密码"
                           type="RSA" />
          </SSLHostConfig>
      </Connector>
      
    4. 启动Tomcat并访问:https://localhost:8443
      说明:若系统装有Tomcat Native/OpenSSL,可设置**sslImplementationName=“org.apache.tomcat.util.net.openssl.OpenSSLImplementation”**获取更好性能。
  • 方式二 APR + Tomcat Native(可选,性能更佳)

    1. 安装依赖:APRAPR-utilTomcat Native(含OpenSSL支持)。
    2. 直接使用PEM证书(无需转JKS)
      <Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
                 maxThreads="150" SSLEnabled="true">
          <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
          <SSLHostConfig>
              <Certificate certificateKeyFile="conf/localhost-key.pem"
                           certificateFile="conf/localhost.pem"
                           type="RSA" />
          </SSLHostConfig>
      </Connector>
      
    3. 启动Tomcat并访问:https://localhost:8443
      说明:APR模式直接使用OpenSSL,通常较NIO模式有更好的TLS/HTTP/2性能表现。

三 验证与常见问题

  • 验证方式
    • 浏览器开发者工具:访问https://你的域名:8443,在Network面板查看Protocol列是否为h2
    • 命令行:curl -v --http2 https://你的域名:8443,输出应包含HTTP/2 200
  • 常见问题与处理
    • HTTP/2未生效:确认证书有效、客户端支持HTTP/2,TLS为1.2+;必要时在SSLHostConfig中显式设置:protocols=“TLSv1.2,TLSv1.3”
    • JDK 8无ALPN:启动参数加入**-javaagent:/path/to/jetty-alpn-agent.jar**,或升级到JDK 9+
    • Tomcat Native加载失败:检查库文件路径与OpenSSL版本(推荐1.1.1+)。

四 Spring Boot内嵌Tomcat的快捷配置

  • application.properties中开启HTTPS与HTTP/2:
    server.port=8443
    server.ssl.key-store=classpath:keystore.p12
    server.ssl.key-store-password=changeit
    server.ssl.keyStoreType=PKCS12
    server.ssl.keyAlias=tomcat
    server.http2.enabled=true
    
  • 生成PKCS12证书(示例):
    keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 \
            -keystore keystore.p12 -validity 3650
    
  • 启动应用后访问:https://localhost:8443
向AI问一下细节

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

AI