Netty: SSLContext

Joe1903

Mitglied
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:

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?
 

KonradN

Super-Moderator
Mitarbeiter
Dann schau Dir das Zertifikat an: Welche Namen sind da enthalten? Und welche Adresse sprichst Du an?

Das sieht so aus, als das Du eine Adresse ansprichst, die nicht durch das SSL Zertifikat abgedeckt ist.
Und natürlich muss der Trust auch stimmen, also es muss dem Root Zertifikat vertraut werden und es muss das intermediate Zertifikat vorhanden sein.
 

Joe1903

Mitglied
Dann schau Dir das Zertifikat an: Welche Namen sind da enthalten? Und welche Adresse sprichst Du an?

Das sieht so aus, als das Du eine Adresse ansprichst, die nicht durch das SSL Zertifikat abgedeckt ist.
Und natürlich muss der Trust auch stimmen, also es muss dem Root Zertifikat vertraut werden und es muss das intermediate Zertifikat vorhanden sein.
Danke für deine Antwort. Das Zertifikat an sich stimmt, da es von einem Listener aus derselben Umgebung ebenfalls benutzt wird.
Jedoch sehe ich im SSL Trace, dass das Zertifikat um einiges kürzer ist, als es sein sollte. Es sieht irgendwie so aus, als ob es abgeschnitten wird.
 

Neue Themen


Oben