Ich verwende Netty als Backend in einem Java-basierten Usenet-Client. Die Bibliothek arbeitet gut, aber unter bestimmten Umständen kann ich nicht an einen Remote-Server über SSL-Verbindung, weil genau dieser Fehler:Wie vermeidet man Diffie-Hellman für SSL-Verbindungen mit Java/Netty?
Java: Why does SSL handshake give 'Could not generate DH keypair' exception?
Leider scheint es, dass nach wie vor aus welchem Grund diese Java-Fehler wurde noch nicht behoben. Und da der Remote-Server nicht unter meiner Kontrolle ist, brauche ich hier eine Abhilfe. Eine solche "Lösung", gemäß dem obigen Link, besteht darin, DH während des SSL-Handshakes überhaupt zu vermeiden (nicht sehr hübsch, aber vielleicht besser als nichts).
Allerdings bin ich kein SSL-Experte, also bin ich mir nicht wirklich sicher, wie ich das in Netty umsetzen kann; oder besser: in meiner Lösung, die auf Netty basiert. Inzwischen bin ich zu schaffen Verbindungen wie folgt aus:
// 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();
...
Ok, das ist in Ordnung, aber wo kann ich Chiffriersätze deaktivieren, bevor ich die SSL-Socket-Verbindung, wie oben im Thread desribed?
Vielen Dank im Voraus für Ihre Hilfe!
Mit freundlichen Grüßen, Matthias
PS: Übrigens, irgendwelche Ideen, warum dieses Problem in Java noch nicht angesprochen wurde?
Vielen Dank, Kumpel. Genau das habe ich gesucht! – Matthias