2017-04-11 80 views
0

我創建了兩個類的服務器和客戶端。服務器開始使用SSL如下如何使用vertx連接http服務器websocket和ssl?

HttpServer server = 
    vertx.createHttpServer(new HttpServerOptions().setSsl(true).setKeyStoreOptions(
    new JksOptions().setPath("server-keystore.jks").setPassword("wibble") 
)); 

還多了一個即客戶端

vertx.createHttpClient(new HttpClientOptions().setSsl(true)).getNow(4443, "localhost", "/", resp -> { 
     System.out.println("Got response " + resp.statusCode()); 
     resp.bodyHandler(body -> System.out.println("Got data " + body.toString("ISO-8859-1"))); 
    }); 

雖然同時運行在客戶端我收到「無法創建SSL連接」。有什麼辦法可以配置任何與ssl相關的東西嗎?

+0

如果我寫.setTrustAll(true)它連接。但那是威脅。所以我如何連接而不信任所有人。 – sanghavi7

+0

將您的證書添加到'TrustOptions'或爲您的服務器使用有效的證書http://vertx.io/docs/vertx-core/java/#_client_trust_configuration – tsegismont

回答

1

要啓用SSL vertx你可以使用keystore.jks文件

然後使用以下配置:

HttpServerOptions secureOptions = new HttpServerOptions(); 
    if (Configuration.SSL_enabled) { 
     LOG.debug("Secure Transport Protocol [ SSL/TLS ] has been enabled !!! "); 
     secureOptions.setSsl(true) 
       .setKeyStoreOptions(new JksOptions().setPath(Configuration.SSL_filename) 
         .setPassword(Configuration.SSL_password)) 
       .setTrustStoreOptions(new JksOptions().setPath(Configuration.SSL_filename) 
         .setPassword(Configuration.SSL_password)) 
       .addEnabledSecureTransportProtocol(Constants.TLS_VERSION_1) 
       .addEnabledSecureTransportProtocol(Constants.TLS_VERSION_2); 

    } 

    vertx.createHttpServer(secureOptions).requestHandler(router::accept).listen(Configuration.port); 

我希望這將幫助你:)

+0

謝謝!它工作正常。 – sanghavi7

相關問題