2017-07-21 2 views
0

Setup: Spring Boot 1.4.1Jetty HTTP2 délai de connexion SSL Client

dépendances Maven:

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-devtools</artifactId> 
     <optional>true</optional> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.jetty.http2</groupId> 
     <artifactId>http2-client</artifactId> 
     <version>9.4.6.v20170531</version> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-io</artifactId> 
     <version>9.4.6.v20170531</version> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-util</artifactId> 
     <version>9.4.6.v20170531</version> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-http</artifactId> 
     <version>9.4.6.v20170531</version> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-http</artifactId> 
     <version>9.4.6.v20170531</version> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-alpn-client</artifactId> 
     <version>9.4.6.v20170531</version> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.jetty.alpn</groupId> 
     <artifactId>alpn-api</artifactId> 
     <version>1.1.3.v20160715</version> 
    </dependency> 

Factory SSL:

public static SslContextFactory createSslContextFactory(String trustKeyStorePath, String trustKeyStorePass, String keyStorePath, String keyStorePass, String keyManagerPass) throws Exception { 
//  logger.info("Creating SSL factory"); 
     System.out.println("Creating SSL factory"); 
     SslContextFactory sslContextFactory = new SslContextFactory(true); 
     try (FileInputStream trustKeyStoreStream = new FileInputStream(trustKeyStorePath); 
       FileInputStream keyStoreStream = new FileInputStream(keyStorePath)) { 
      KeyStore truststore = KeyStore.getInstance(KeyStore.getDefaultType()); 
      KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); 
      truststore.load(trustKeyStoreStream, trustKeyStorePass.toCharArray()); 
      keystore.load(keyStoreStream, keyStorePass.toCharArray()); 
      sslContextFactory.setTrustAll(false); 
      sslContextFactory.setTrustStore(truststore); 
      sslContextFactory.setKeyStore(keystore); 
      sslContextFactory.setKeyManagerPassword(keyManagerPass); 

     } catch (KeyStoreException e) { 
//   logger.error("Keystore error", e); 
      e.printStackTrace(); 
      throw e; 
     } catch (IOException | NoSuchAlgorithmException | CertificateException e) { 
//   logger.error("Key loading error", e); 
      e.printStackTrace(); 
      throw e; 
     } 
     return sslContextFactory; 
    } 

L'extrait de connexion:

this.client = new HTTP2Client(); 
      client.setIdleTimeout(-1);//disable client session timeout 
      try { 
       client.addBean(this.sslContextFactory); 
       client.start(); 
       System.out.println("Connecting on " + this.host + ":" + this.port); 
       FuturePromise<Session> sessionPromise = new FuturePromise<>(); 
       client.connect(sslContextFactory, new InetSocketAddress(this.host, this.port), new NEADSessionListener(clientInstanceName, this), sessionPromise); 
       this.session = sessionPromise.get(5, TimeUnit.SECONDS); 
      } catch (...) { 

Je cours en utilisant

-Xbootclasspath/p:/path/to/alpn-boot-8.1.10.v20161026.jar 

qui est la version appropriée pour ma machine virtuelle Java.

Le résultat est

java.util.concurrent.TimeoutException 
     at org.eclipse.jetty.util.FuturePromise.get(FuturePromise.java:130) 

Réglage de l'enregistreur de la jetée sur le débogage n'a pas aidé beaucoup, les derniers éléments consignés sont:

2017-07-21 04:44:51.483 DEBUG 18323 --- [tp1224347463-26] org.eclipse.jetty.io.FillInterest  : [email protected]{true,[email protected]{[email protected]{NOT_HANDSHAKING,eio=-1/-1,di=-1}=>[email protected]<[email protected]{nead.2.addr/10.203.6.184:9443<->/192.168.111.11:41652,OPEN,fill=FI,flush=-,to=0/-1}{io=0/0,kio=0,kro=1}->[email protected]{NOT_HANDSHAKING,eio=-1/-1,di=-1}=>[email protected]}} register [email protected]{[email protected]{NOT_HANDSHAKING,eio=-1/-1,di=-1}=>[email protected]<[email protected]{nead.2.addr/10.203.6.184:9443<->/192.168.111.11:41652,OPEN,fill=FI,flush=-,to=0/-1}{io=0/0,kio=0,kro=1}->[email protected]{NOT_HANDSHAKING,eio=-1/-1,di=-1}=>[email protected]} 
2017-07-21 04:44:51.483 DEBUG 18323 --- [tp1224347463-26] org.eclipse.jetty.io.ChannelEndPoint  : changeInterests p=false 0->1 for [email protected]{nead.2.addr/10.203.6.184:9443<->/192.168.111.11:41652,OPEN,fill=FI,flush=-,to=0/-1}{io=0/1,kio=0,kro=1}->[email protected]29ab178d{NOT_HANDSHAKING,eio=-1/-1,di=-1}=>[email protected] 
2017-07-21 04:44:51.484 DEBUG 18323 --- [tp1224347463-26] org.eclipse.jetty.io.ManagedSelector  : Queued change CEP:[email protected]{nead.2.addr/10.203.6.184:9443<->/192.168.111.11:41652,OPEN,fill=FI,flush=-,to=0/-1}{io=0/1,kio=0,kro=1}->[email protected]{NOT_HANDSHAKING,eio=-1/-1,di=-1}=>[email protected]:runUpdateKey:NON_BLOCKING on [email protected] id=0 keys=1 selected=0 
2017-07-21 04:44:51.484 DEBUG 18323 --- [tp1224347463-29] org.eclipse.jetty.io.ManagedSelector  : Selector loop woken up from select, 0/1 selected 
2017-07-21 04:44:51.484 DEBUG 18323 --- [tp1224347463-26] org.eclipse.jetty.io.ssl.SslConnection : onFillable exit [email protected]{nead.2.addr/10.203.6.184:9443<->/192.168.111.11:41652,OPEN,fill=FI,flush=-,to=1/-1}->[email protected]>[email protected]{nead.2.addr/10.203.6.184:9443<->/192.168.111.11:41652,OPEN,fill=FI,flush=-,to=1/-1}{io=0/1,kio=0,kro=1}->[email protected]{NOT_HANDSHAKING,eio=-1/-1,di=-1}=>[email protected] 
2017-07-21 04:44:51.484 DEBUG 18323 --- [tp1224347463-29] org.eclipse.jetty.io.ManagedSelector  : Running action CEP:[email protected]{nead.2.addr/10.203.6.184:9443<->/192.168.111.11:41652,OPEN,fill=FI,flush=-,to=1/-1}{io=0/1,kio=0,kro=1}->[email protected]{NOT_HANDSHAKING,eio=-1/-1,di=-1}=>[email protected]:runUpdateKey:NON_BLOCKING 
2017-07-21 04:44:51.484 DEBUG 18323 --- [tp1224347463-26] o.e.j.u.t.Invocable$InvocableExecutor : [email protected]2f invoked CEP:[email protected]{nead.2.addr/10.203.6.184:9443<->/192.168.111.11:41652,OPEN,fill=FI,flush=-,to=1/-1}{io=0/1,kio=0,kro=1}->[email protected]{NOT_HANDSHAKING,eio=-1/-1,di=-1}=>[email protected]:runFillable:BLOCKING 
2017-07-21 04:44:51.484 DEBUG 18323 --- [tp1224347463-26] o.e.j.u.thread.strategy.EatWhatYouKill : [email protected]/[email protected]/PRODUCING/1/1 produce exit 
2017-07-21 04:44:51.484 DEBUG 18323 --- [tp1224347463-29] org.eclipse.jetty.io.ChannelEndPoint  : Key interests updated 0 -> 1 on [email protected]{nead.2.addr/10.203.6.184:9443<->/192.168.111.11:41652,OPEN,fill=FI,flush=-,to=1/-1}{io=1/1,kio=1,kro=1}->[email protected]{NOT_HANDSHAKING,eio=-1/-1,di=-1}=>[email protected] 
2017-07-21 04:44:51.484 DEBUG 18323 --- [tp1224347463-26] o.e.jetty.util.thread.QueuedThreadPool : ran [email protected]/[email protected]/PRODUCING/1/1 
2017-07-21 04:44:51.484 DEBUG 18323 --- [tp1224347463-29] org.eclipse.jetty.io.ManagedSelector  : Selector loop waiting on select 

Notez que la connexion au même serveur, en utilisant le mêmes touches, travaille à partir d'un autre logiciel.

+0

Il n'y a pas assez d'informations. Le serveur est-il correctement configuré pour exécuter HTTP/2? Si vous pouvez facilement reproduire, pouvez-vous s'il vous plaît ouvrir un problème à https://github.com/eclipse/jetty.project/issues et joindre un cas de test reproductible? Merci ! – sbordet

+0

Merci. Imaginé finalement que c'était juste la façon dont nous avons chargé le projet. L'IDE ajoutait -Xbootclasspath à la fin au lieu d'avant -jar .... Ce serait bien si l'erreur lancée par le client était un peu plus spécifique, puisque, évidemment, il était incapable de négocier la connexion en l'absence d'ALPN. – Deroude

Répondre

0

Il s'avère que l'ordre des commutateurs Java était la cause du problème - plus précisément, -Xbootclasspath/p:/path/to/alpn-boot-8.1.10.v20161026.jar doit aller avant toute autre chose, certainement avant -jar program.jar.