首页 > 解决方案 > 如何配置 Apache httpcore5 java HttpAsyncServer 在其侦听端口上使用 TLS?

问题描述

当使用 apache httpcore5 java 库来实现 HTTP 服务器时,我找不到合适的习语来装配套接字以使用 TLS。

在较旧的 httpcore 版本 4.x 下,我可以

KeyStore keyStore = KeyStore.getInstance("JKS");
keyStore.load(keystoreStream, keystorePassword.toCharArray());

KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(keyStore, keyPassword.toCharArray());

SSLContext sc = SSLContext.getInstance("TLSv1.2");
sc. init(kmf.getKeyManagers(), null, new SecureRandom());
ServerSocket sSock = sc.getServerSocketFactory().createServerSocket(port);

然后接受来自该服务器套接字的连接以及bind()那些到 aDefaultHttpServerConnectionhandleRequest()循环的套接字。

我还没有找到如何使用 httpcore5 框架编写支持 TLS 的服务器的示例。

标签: javasslhttps

解决方案


经过一番翻找后,我发现H2ServerBootstrap.setTlsStrategy()并像这样使用它:

SSLContext ctx = buildAppSSLContext();
bootstrap.setTlsStrategy(new BasicServerTlsStrategy(ctx, new FixedPortStrategy(new int[]{port})));

推荐阅读