我在基于 Java 的 Usenet 客户端中使用 Netty 作为后端。该库工作正常,但是,在某些情况下,我无法通过 SSL 连接到远程服务器,因为正是这个错误:
Java:为什么 SSL 握手会给出“无法生成 DH 密钥对”异常?
不幸的是,无论出于何种原因,这个 Java 错误似乎仍未得到修复。而且由于远程服务器不在我的控制之下,所以我需要一个解决方法。根据上面的链接,一种这样的“解决方案”是在 SSL 握手期间完全避免 DH(不是很漂亮,但可能总比没有好)。
但是,我不是 SSL 专家,所以我不确定如何在 Netty 中实现它;或更好:在我基于 Netty 的解决方案中。到目前为止,我正在创建这样的连接:
// configure the Netty client
ClientBootstrap bootstrap = new ClientBootstrap(clSockChannelFactory);
// configure the pipeline factory
bootstrap.setPipelineFactory(channelPipelineFactory);
bootstrap.setOption("tcpNoDelay", true);
bootstrap.setOption("keepAlive", true);
bootstrap.setOption("child.receiveBufferSizePredictorFactory",
new AdaptiveReceiveBufferSizePredictorFactory());
// start the connection attempt
InetSocketAddress isa = new InetSocketAddress(serverAddress, port);
ChannelFuture future = bootstrap.connect(isa);
...
channel = future.getChannel();
...
好的,这很好,但是在我连接 SSL 套接字之前,我可以在哪里禁用密码套件,如上面的线程中所述?
提前感谢您的所有帮助!
亲切的问候,马蒂亚斯
PS:顺便问一下,为什么这个问题还没有在 Java 中解决?