SSL-соединение между сервером и клиентом с использованием vertx - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь установить SSL-соединение между сервером и клиентом, используя vertx.Я создал сертификат сервера и сохранил его в хранилище ключей, извлек сертификат из хранилища ключей и импортировал его в хранилище доверенных сертификатов.Но когда я пытаюсь подключить сервер к клиенту, получаю сообщение об ошибке ниже: javax.net.ssl.SSLException: получено фатальное предупреждение: certificate_unknown

Сгенерированные keystore.jks и truststore.jks, я сохранил его в отдельной папкеи я ссылаюсь на это местоположение в моем коде.

Используя vertx, который я сделал ниже, код сервера:

HttpServer server =vertx.createHttpServer(new HttpServerOptions().setSsl(true).setKeyStoreOptions(
                new JksOptions().setPath("C:\\Desktop\\keystore.jks").setPassword("xxxxx")
              ));
        // Creating HttpServer
        server.requestHandler(router::accept).listen((int) configs.get(Constants.PORT));

код клиента:

 WebClientOptions options = new WebClientOptions();
      options.setKeepAlive(config().getBoolean("webClient.keepAlive", true));
      options.setMaxPoolSize(config().getInteger("webClient.maxPoolSize", 200));
      options.setSsl(true);
      options.setTrustStoreOptions(new JksOptions()
        .setPath("C:/Desktop/truststore.jks")
        .setPassword("xxxxx")
      );
      WebClient webClient = WebClient.create(vertx, options);

сторона сервера:

io.netty.handler.codec.DecoderException: javax.net.ssl.SSLException: Received fatal alert: certificate_unknown
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:459)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:265)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)

на стороне клиента:

Caused by: java.security.cert.CertificateException: No name matching localhost found
    at sun.security.util.HostnameChecker.matchDNS(HostnameChecker.java:231)
    at sun.security.util.HostnameChecker.match(HostnameChecker.java:96)

Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem
    at sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1521)
    at sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:528)

1 Ответ

0 голосов
/ 13 июня 2019

Я пытался вызвать API сервера с именем хоста: localhost.Но при создании сертификата я дал CN кое-что еще.Когда я пытался вызвать API, используя тот же CN - работал нормально.

...