HTTP/2 需要 Apache Tomcat Native Library 的支援才行, 所以首先是先安裝 Apache Tomcat Native Library。
Tomcat Native Library 需要 libapr1,所以如果是使用 openSUSE,
sudo zypper install libapr1-devel
再來是自己編譯 Tomcat 或者是使用 RPM 安裝。
然後,需要創造 OpenSSL Certificate。 可以參考 Howto: Make Your Own Cert With OpenSSL。
如果只是要自己測試使用所以使用 self-signed,在 conf 目錄下使用下列的指令:
openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 1826 -key ca.key -out ca.crt
最後修改 conf 目錄下的 server.xml,開啟 HTTP/2 的支援並且修改如下:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true" >
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate certificateKeyFile="conf/ca.key"
certificateFile="conf/ca.crt" />
</SSLHostConfig>
</Connector>
再來重新開啟 Apache Tomcat server,如果 https://localhost:8443 可以瀏覽,就正確的設定好了(* 因為是 self-signed,所以會看到安全性警告)。
TclCurl 在最近的版本有支援 HTTP/2,下面是驗證 Apache Tomcat HTTP/2 (self-signed) 的範例:
package require TclCurl set curlHandle [curl::init] $curlHandle configure -url https://localhost:8443 -sslverifyhost 0 \ -sslverifypeer 0 -bodyvar result $curlHandle setopt CURLOPT_HTTP_VERSION 2TLS catch { $curlHandle perform } curlErrorNumber if { $curlErrorNumber != 0 } { puts "error [curl::easystrerror $curlErrorNumber]" } # Print result and clean up puts $result $curlHandle cleanup
那麼我們怎麼知道真的是使用 HTTP/2 協定呢?這只要檢查 Tomcat logs 目錄下的 log 就可以確定。
沒有留言:
張貼留言