如何使用 Apache HTTP 组件为每个路由配置 SSLSocket 工厂
How to configure SSLSocket Factory per route using Apache HTTP Components
有没有办法为 Apache HTTP 客户端中的每个路由设置单独的 SSL 上下文工厂。从文档中我只能看到我们可以按方案而不是按路由配置 SSLContextFactory。
Registry<ConnectionSocketFactory> r = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", plainsf)
.register("https", sslsf)
.build();
HttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(r);
HttpClients.custom()
.setConnectionManager(cm)
.build();
我的所有目标端点都受 HTTPS 保护,并要求进行客户端证书身份验证。对于这些端点中的每一个,我必须 select 一个特定的客户端证书并将其提交给端点服务器。目前我看到的唯一方法是为每个目标端点路由创建一个单独的 HTTPClient 实例并使用 SSLContext Factory 实例进行配置。
我在这里寻找改进此设计的任何指示。
谢谢。
我已经在 Apache HTTP 客户端论坛上发布了这个问题,并找到了如何处理这个问题的解决方案。
One can use 'http.socket-factory-registry' context attribute to that
end but please note this feature is considered undocumented.
Please also note that one can build a custom ConnectionSocketFactory
that makes use of custom context attributes when creating SSL sockets.
That would be the recommended way to solve the issue.
有没有办法为 Apache HTTP 客户端中的每个路由设置单独的 SSL 上下文工厂。从文档中我只能看到我们可以按方案而不是按路由配置 SSLContextFactory。
Registry<ConnectionSocketFactory> r = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", plainsf)
.register("https", sslsf)
.build();
HttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(r);
HttpClients.custom()
.setConnectionManager(cm)
.build();
我的所有目标端点都受 HTTPS 保护,并要求进行客户端证书身份验证。对于这些端点中的每一个,我必须 select 一个特定的客户端证书并将其提交给端点服务器。目前我看到的唯一方法是为每个目标端点路由创建一个单独的 HTTPClient 实例并使用 SSLContext Factory 实例进行配置。
我在这里寻找改进此设计的任何指示。
谢谢。
我已经在 Apache HTTP 客户端论坛上发布了这个问题,并找到了如何处理这个问题的解决方案。
One can use 'http.socket-factory-registry' context attribute to that end but please note this feature is considered undocumented.
Please also note that one can build a custom ConnectionSocketFactory that makes use of custom context attributes when creating SSL sockets. That would be the recommended way to solve the issue.