ssl - 有没有办法为 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。
解决方案
通过编写自定义工厂来实现这一点:
- PortRangeSSLServerSocketFactory扩展和组成 jsse SSLServerSocketFactory 类。
重写configure()以从jacorb.properties读取最小/最大端口配置。
createServerSocket()被覆盖以处理端口选择。从org.jacorb.orb.factory.PortRangeServerSocketFactory导入的逻辑。
- PortRangeSSLSocketFactory扩展AbstractSocketFactory。从org.jacorb.security.ssl.sun_jsse.SSLSocketFactory导入的 SSL 逻辑和从org.jacorb.orb.factory.PortRangeSocketFactory导入的端口范围选择逻辑。
通过OAIAddr属性为两者处理多宿主案例。
优点:可以进行大量定制。缺点:代码使用最少,因为实现逻辑的许多属性和方法都是私有的。