java - 如何配置 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()
那些到 aDefaultHttpServerConnection
和handleRequest()
循环的套接字。
我还没有找到如何使用 httpcore5 框架编写支持 TLS 的服务器的示例。
解决方案
经过一番翻找后,我发现H2ServerBootstrap.setTlsStrategy()
并像这样使用它:
SSLContext ctx = buildAppSSLContext();
bootstrap.setTlsStrategy(new BasicServerTlsStrategy(ctx, new FixedPortStrategy(new int[]{port})));
推荐阅读
- aws-cdk - 我可以使用从 cdk deploy 创建的值执行另一个脚本吗?
- javascript - 如何使用 create-react-app 进行客户端路由
- python - 如何从 Python 打印到 Zebra RW420
- python - 如何计算数组中的两个元素是否成对?
- reactjs - react-query:无论getQuery是否被缓存,是否有一个回调触发?
- dataframe - 更正格式错误的 CSV 并将更正的数据拉回数据框中
- java - 航空公司预订系统 UML 问题 - 这些方法属于哪里?
- azure - 从 .NET Core Web App 中的 Azure AD 撤消访问权限或刷新组和角色
- reactjs - 在 monorepo 中对资产进行重复数据删除
- apache-spark - 在火花数据框中的每一行的地图类型列中按键排序