首页 > 解决方案 > 有没有办法为 SSLSocketFactory 和 SSLServerSocketFactory 指定端口范围

问题描述

我正在将 jacorb 配置为与 SSL 一起使用。选择的服务器/客户端端口是随机的。在非 SSL 配置的情况下,我需要指定一系列端口,类似于 PortRangeSocketFactory/PortRangeServerSocketFactory。

我试图避免OASSLPort属性,因为端口变得固定(而不是范围)并且仅适用于服务器/侦听端口。客户端端口仍然是随机的。

我有一组进程,其中一些既充当服务器又充当客户端- 共享jacorb.properties

当前jacorb.properties配置:

jacorb.ssl.socket_factory=org.jacorb.security.ssl.sun_jsse.SSLSocketFactory
jacorb.ssl.server_socket_factory=org.jacorb.security.ssl.sun_jsse.SSLServerSocketFactory

我正在使用 Jacorb 3.9、RHEL 7.3 和 Java 1.8.0_171。

标签: sslsslsocketfactoryjacorb

解决方案


通过编写自定义工厂来实现这一点:

  1. PortRangeSSLServerSocketFactory扩展和组成 jsse SSLServerSocketFactory 类。

重写configure()以从jacorb.properties读取最小/最大端口配置。

createServerSocket()被覆盖以处理端口选择。从org.jacorb.orb.factory.PortRangeServerSocketFactory导入的逻辑。

  1. PortRangeSSLSocketFactory扩展AbstractSocketFactory从org.jacorb.security.ssl.sun_jsse.SSLSocketFactory导入的 SSL 逻辑和从org.jacorb.orb.factory.PortRangeSocketFactory导入的端口范围选择逻辑。

通过OAIAddr属性为两者处理多宿主案例。

优点:可以进行大量定制。缺点:代码使用最少,因为实现逻辑的许多属性和方法都是私有的。


推荐阅读