vertx HTTPS(SSL / TLS)服务器不起作用。我无法访问https:// localhost

时间:2019-03-30 22:32:13

标签: java ssl https tls1.2 vert.x

我已经在vert.x中创建了HTTPS服务器。

vertx.createHttpServer(
    new HttpServerOptions()
        .setSsl(true)
        .setKeyStoreOptions(new JksOptions()
            .setPath("path/to/keystore")
            .setPassword("password")
        )
).requestHandler( (HttpServerRequest req) -> {
    System.out.println("Access.");
    req.response().putHeader("Content-Type", "text/html; charset=utf-8");
    req.response().end("Hello world!");
    // ...
}).listen(80, "localhost");

我已经用keytool创建了密钥库。

keytool -genkeypair -keystore keystore -storetype jks

我已经成功部署了verticle。但是服务器没有响应。

访问https://localhost没有任何帮助。甚至没有打印日志。

怎么了?

我尝试了以下类似选项。

vertx.createHttpServer(
    new HttpServerOptions()
        .setSsl(true)
        .setKeyStoreOptions(new JksOptions()
            .setPath("path/to/keystore")
            .setPassword("password")
        )
        // .setUseAlpn(true)
        // .setTrustOptions(new JksOptions()
        //  .setPath("C:/Recoeve/keystore")
        //  .setPassword("Xs41Kipid$ps15")
        // )
        // .setClientAuthRequired(false)
        // .setClientAuth(ClientAuth.NONE)
        // .addEnabledSecureTransportProtocol(TCPSSLOptions.DEFAULT_ENABLED_SECURE_TRANSPORT_PROTOCOLS.get(1))
        // .addEnabledSecureTransportProtocol("TLSv1.3")
        // .setEnabledSecureTransportProtocols(TCPSSLOptions.DEFAULT_ENABLED_SECURE_TRANSPORT_PROTOCOLS)
).requestHandler( (HttpServerRequest req) -> {
    // ...
}).listen(80, "localhost");

但是代码给出了运行时异常。

1 个答案:

答案 0 :(得分:0)

以下代码对我有用:

    JksOptions keyOptions = new JksOptions();
    keyOptions.setPath("path-to-your/keystore.jks");
    keyOptions.setPassword("changeit");

    vertx.createHttpServer(
      new HttpServerOptions()
        .setSsl(true)
        .setKeyStoreOptions(keyOptions)
    ).requestHandler( (HttpServerRequest req) -> {
      System.out.println("Access.");
      req.response().putHeader("Content-Type", "text/html; charset=utf-8");
      req.response().end("Hello SSL world!");
    }).listen(8443, "localhost");