Tomcat 9 配置 HTTP/2

jyat6196 6年前
   <p> </p>    <h2>介绍</h2>    <p>JavaEE 8的最重要的发展之一就是对HTTP/2的支持(现在的官方 <a href="/misc/goto?guid=4959670565758947100" rel="nofollow,noindex">RFC 7540</a> )。现在JCP的 JSR-369已经发展了近2年的时间,规范的负责人Ed Burns和Shing Wai Chan在推进该进程中做了大量的工作。</p>    <p>在写作的时候,当前三家服务器厂商支持Servlet 4.0: <a href="/misc/goto?guid=4959670565849853126" rel="nofollow,noindex">Apache Tomcat 9.0.0.M4</a> , <a href="/misc/goto?guid=4958329759590197776" rel="nofollow,noindex">Jetty 9</a> 和 <a href="/misc/goto?guid=4958968348610997798" rel="nofollow,noindex">WildFly 10.0.0.Final</a> 。我们可以看一下如何配置 Tomcat 9 以支持它。</p>    <h2>HTTP2的目标</h2>    <p>HTTP/2的目标是增加Web浏览体验的性能感受。</p>    <h2>为什么需要HTTP2</h2>    <p>一个Web页面需要加载许多的资源。在HTTP 1.0中,对所有资源的请求都是同时发出的并且服务端响应所有的请求。如果其中的一个资源花费了额外的时间,因为头线阻塞,那么所有其他的资源都会被阻塞。</p>    <h2>从HTTP1.1升级</h2>    <p>大多数Web站点使用HTTP1.1。要升级至 HTTP/2 可以使用头更新 (101 协议开关) 来向服务端发送 h2c,该服务器会升级至 h2c (c 意味着明确的文本),注意,目前在Firefox和Chrome中并没有h2c。</p>    <p>如何才是安全的呢?可以使用ALPN,它是一个TLS的扩展,在握手时可以发送一个扩展然后服务器就会检测到通讯协议是h2。</p>    <h2>下载Tomcat 9</h2>    <p>为你的系统下载相应的 <a href="/misc/goto?guid=4959670565849853126" rel="nofollow,noindex">Tomcat 9</a> 二进制发行版,然后通过解压压缩包来进行安装。确保已经安装了Java 8 SE。</p>    <h2>用OpenSSL生成证书</h2>    <p>正如上面已经讨论过的,配置TLS来使用 HTTP/2是非常必要的,因为Firefox和Chrome对明确文本支持的缺乏。对于TLS,需要一个证书,如果还没有准备好一个证书,可以用 <a href="/misc/goto?guid=4959670565994817915" rel="nofollow,noindex">OpenSSL</a> 生成。</p>    <h2>配置server.xml</h2>    <p>Tomcat 9 的一个改变是对于TLS虚拟主机和多证书的支持是通过一个单一连接器实现的。.</p>    <p>Open the <em>conf/server.xml</em> file and make the following configuration changes.</p>    <pre>  <code class="language-xml"><Connector port="8443"  protocol="org.apache.coyote.http11.Http11AprProtocol"  maxThreads="150" SSLEnabled="true">  <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol"/>  <SSLHostConfig honorCipherOrder="false">  <Certificate certificateKeyFile="conf/ca.key"  certificateFile="conf/ca.crt"/>  </SSLHostConfig>  </Connector></code></pre>    <p>重启Tomcat。</p>    <h2>结论</h2>    <p>要测试这个配置可以访问 <a href="/misc/goto?guid=4959518921849856624" rel="nofollow,noindex">https://localhost:8443</a> 。如果看到了Tomcat主页,那么就为Tomcat 9成功地配置了TLS。这时就可以使用 Servlet 4.0进行开发了。</p>    <p>关注这个空间可以了解更多有关 Servlet 4.0的教程。</p>    <p>如果你对HTTP/2规范感兴趣, 你也可能对我的 <a href="/misc/goto?guid=4959670566104486944" rel="nofollow,noindex">HTTP/2 规范</a> 教程感兴趣。</p>    <p>来自: <a href="/misc/goto?guid=4959670566178789436" rel="nofollow">http://www.oschina.net/translate/configure-tomcat-9-forhttp2</a></p>