有没有一种方法可以指定SSLSocketFactory和SSLServerSocketFactory的端口范围

时间:2019-04-22 11:57:06

标签: ssl sslsocketfactory jacorb

我正在配置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。

1 个答案:

答案 0 :(得分:0)

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

  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 属性处理这两种情况。

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