Das erste wichtige ist: Was heißt, dass es nicht funktioniert? Was passiert? Was für Fehlermeldungen bekommst Du? Das ist so in der Form mal wieder ein Stochern im Nebel....
Also gemäß dem Buch "Netty in action", Kapitel 11, sollte der SslHandler Konstructor vom Client mit true und beim Server mit false aufgerufen werden. Das ist bei dir umgekehrt. Was das bewirkt / ausmacht: Da fehlt mir der Überblick.
Ansonsten vielleicht noch der Hinweis, dass Du zur Not den Rahmen von
https://github.com/netty/netty/tree/4.1/example/src/main/java/io/netty/example/securechat verwenden kannst. Das ist das SecureChat Beispiel von netty...
Ansonsten noch gibt es auch noch
https://medium.com/@maanadev/netty-with-https-tls-9bf699e07f01 das evtl. etwas hilfreiches enthalten könnte ...
Also ich habe den Fehler herausgefunden, doch weiß nicht, wie ich es fixen soll:
Code:
[CODE lang="java" title="Netty-Server"] SelfSignedCertificate ssc = new SelfSignedCertificate();
SslContext context = SslContextBuilder
.forServer(ssc.certificate(), ssc.privateKey()).protocols("TLSv1.3")
.build();
SslHandler sslhandler = context.newHandler(channel.alloc());
ChannelPipeline pipeline = channel.pipeline();
pipeline.addLast(sslhandler);
pipeline.addLast(new StringEncoder(CHARSET),
new LineBasedFrameDecoder(MAX_LINE_LENGTH), new StringDecoder(CHARSET),
new ServerListener());[/CODE]
[CODE lang="java" title="Netty-Client"] SslContext context = SslContextBuilder.forClient().protocols("TLSv1.3")
.trustManager(InsecureTrustManagerFactory.INSTANCE).build();
SslHandler sslhandler = context.newHandler(channel.alloc(), SERVER_HOST, PORT);
ChannelPipeline pipeline = channel.pipeline();
pipeline.addLast(sslhandler);
pipeline.addLast(new StringEncoder(CHARSET),
new LineBasedFrameDecoder(MAX_LINE_LENGTH), new StringDecoder(CHARSET),
Client.clientListener);[/CODE]
[CODE lang="java" title="Fehler"]Dez 27, 2020 3:37:43 PM io.netty.channel.ChannelInitializer exceptionCaught
WARNUNG: Failed to initialize a channel. Closing: [id: 0x19530208]
java.lang.IllegalArgumentException: TLSv1.3
at sun.security.ssl.ProtocolVersion.valueOf(Unknown Source)
at sun.security.ssl.ProtocolList.convert(Unknown Source)
at sun.security.ssl.ProtocolList.<init>(Unknown Source)
at sun.security.ssl.SSLEngineImpl.setEnabledProtocols(Unknown Source)
at io.netty.handler.ssl.JdkSslContext.configureAndWrapEngine(JdkSslContext.java:342)
at io.netty.handler.ssl.JdkSslContext.newEngine(JdkSslContext.java:336)
at io.netty.handler.ssl.SslContext.newHandler(SslContext.java:1007)
at io.netty.handler.ssl.SslContext.newHandler(SslContext.java:999)
at de.tails.chatsystem.main.ChatSystem$2.initChannel(ChatSystem.java:84)
at de.tails.chatsystem.main.ChatSystem$2.initChannel(ChatSystem.java:1)
at io.netty.channel.ChannelInitializer.initChannel(ChannelInitializer.java:129)
at io.netty.channel.ChannelInitializer.handlerAdded(ChannelInitializer.java:112)
at io.netty.channel.AbstractChannelHandlerContext.callHandlerAdded(AbstractChannelHandlerContext.java:938)
at io.netty.channel.DefaultChannelPipeline.callHandlerAdded0(DefaultChannelPipeline.java:609)
at io.netty.channel.DefaultChannelPipeline.access$100(DefaultChannelPipeline.java:46)
at io.netty.channel.DefaultChannelPipeline$PendingHandlerAddedTask.execute(DefaultChannelPipeline.java:1463)
at io.netty.channel.DefaultChannelPipeline.callHandlerAddedForAllHandlers(DefaultChannelPipeline.java:1115)
at io.netty.channel.DefaultChannelPipeline.invokeHandlerAddedIfNeeded(DefaultChannelPipeline.java:650)
at io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:502)
at io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:417)
at io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:474)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Unknown Source)[/CODE]
So wie ihr seht ist der Fehler bei der Methode: .protocols("TLSv1.3")
Ich habe es vorhin auf "TLSv1.2" umgeändert und es hat geklappt.
Aber ich möchte klarerweise TLSv1.3 nutzen. Weiß jemand was ich dazu machen muss?