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