Hallo zusammen,
ich habe einen Listener, welches auf dem Mainframe läuft. Ohne SSL läuft das Ganze auch sehr gut. Nun habe ich die Nutzung eines RACF-Keyrings eingebaut.
Wenn ich jetzt das Programm laufen lasse, bekomme ich zwar keinen Fehler, aber der Client, welcher sich verbinden möchte, bekommt folgenden Fehler:
Exception in thread "main" javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
Das ist die entsprechende Stelle im Code:
Gibt es da einen Fehler in meinem Code?
ich habe einen Listener, welches auf dem Mainframe läuft. Ohne SSL läuft das Ganze auch sehr gut. Nun habe ich die Nutzung eines RACF-Keyrings eingebaut.
Wenn ich jetzt das Programm laufen lasse, bekomme ich zwar keinen Fehler, aber der Client, welcher sich verbinden möchte, bekommt folgenden Fehler:
Exception in thread "main" javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
Das ist die entsprechende Stelle im Code:
Java:
try {
KeyStore ks = KeyStore.getInstance("JCERACFKS");
ks.load(null, null);
System.setProperty("javax.net.ssl.keyStore", "safkeyring://USERID/RACFNAME");
System.setProperty("javax.net.ssl.keyStoreType", "JCERACFKS");
System.setProperty("javax.net.ssl.trustStore", "safkeyring://USERID/RACFNAME");
System.setProperty("javax.net.ssl.trustStoreType", "JCERACFKS");
KeyManagerFactory kmf = KeyManagerFactory.getInstance("IbmX509");
kmf.init(ks, null);
SslContext sslCtx = SslContextBuilder.forServer(kmf).build();
ServerBootstrap b = new ServerBootstrap();
b.group(dispatcher, children)
.channel(NioServerSocketChannel.class)
.localAddress(new InetSocketAddress(port))
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch) throws Exception {
ch.pipeline().addLast(new ChannelTrafficShapingHandler(200));
ch.pipeline().addLast(sslCtx.newHandler(ch.alloc()));
}
});
ChannelFuture f = b.bind().sync();
f.channel().closeFuture().sync();
} finally {
shutdown() ;
}
}
Gibt es da einen Fehler in meinem Code?