基于Java的Vertx框架中的mTLS终止

问题描述

我有一个基于Java Vertx框架的项目,在该项目中,内部API调用很少。 因此,流程是我在端口XXXX(已配置TLS-HTTPS)处公开了一个API,并且在此API调用内,我正在调用HTTP中的另一个负载平衡器。因此,我需要在调用Http负载平衡器之前终止mTLS。

以下是VertX POST调用的示例代码段:

private void handleDownstreamRequest(RoutingContext routingContext,String downstreamUrl) {
        VertxUtil.assertOnVertxEventLoop();
        client.postAbs(downstreamUrl) // POST request
            .sendJson(
                routingContext.getBody(),ar -> {
                    asyncHttpResponseHandler(ar,routingContext);
                });
    }

我想知道如何在Vertx Framework中终止TLS。 Vertx是否公开了任何内置库来终止mTLS,或者任何示例代码片段也将有所帮助。

解决方法

为以下配置HTTP服务器 您可以将HTTP服务器配置为使用证书颁发机构,以验证客户端的身份:

HttpServerOptions options = new HttpServerOptions()
  .setSsl(true)
  .setClientAuth(ClientAuth.REQUIRED)
  .setTrustStoreOptions(
    new JksOptions()
      .setPath("/path/to/your/truststore.jks")
      .setPassword("password-of-your-truststore")
  );
HttpServer server = vertx.createHttpServer(options);

以上示例假定您具有Java信任库,但Vert.x也支持PFX / PEM格式。