Search code examples
sslopensslvert.xvertx-httpclient

How to connect http server websocket with ssl using vertx?


I have created two classes server and client. Server starting with ssl as below

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

Also one more i.e. client

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")));
    });

While running both On client I am getting "Failed to create SSL connection". Is there any way to configure anything related to ssl?


Solution

  • To enable ssl in vertx you can use keystore.jks file

    Then use following configuration :

    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);
    

    I hope this will help you :)