Support d’ALPN
Pour Vert.X 3.3 et 3.4
-
Avec l’extension ALPN de Jetty (en Java 8)
-
Avec OpenSSL
Code
Pour activer HTTP/2, il faut d’abord un serveur HTTP avec TLS, sur lequel on active ALPN.
HttpServerOptions h2Options = new HttpServerOptions()
.setSsl(true)
.setKeyStoreOptions(
new JksOptions()
.setValue(Buffer.buffer(getKeyStore()))
.setPassword(KEYSTORE_PASSWORD))
.setUseAlpn(true);
OpenSSL
Le code ci-dessus produit une erreur si on utilise JSSE, l’implémentation Java de TLS. Par contre, ça fonctionne si on passe en OpenSSL. Et pour ça, il faut ajouter l’extension BoringSSL de Netty.
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-tcnative-boringssl-static</artifactId>
<version>1.1.33.Fork26</version>
<scope>runtime</scope>
</dependency>
Remarque : ça fonctionne avec Vert.x 3.4 (donc Netty 4.1) + Netty tcnative 1.1, par contre, ça ne marche pas avec Netty tcnative 2.0.
JSSE
Comme pour Tomcat, HTTP/2 peut fonctionner en JSSE avec Java 8 à condition d’ajouter l’extension ALPN de Jetty au bootclasspath.
java -Xbootclasspath/p:alpn-boot-8.1.11.v20170118.jar ...