later, I generated a keystore for the server and a truststore for the client. Add dependency netty-incubator-codec-native-quic for client. Configure http3client:
SslBundle sslBundle = factory.getSslBundles().getBundle("http3");
TrustManager[] trustManagers = sslBundle.getManagers().getTrustManagers();
Http3SslContextSpec sslContextSpec = Http3SslContextSpec
.forClient()
.configure(s -> s.trustManager(trustManagers[0]));
return HttpClient.create()
// Configure HTTP/3 protocol
.protocol(HttpProtocol.HTTP3)
// Configure HTTP/3 settings
.secure(spec -> spec.sslContext(sslContextSpec))
.http3Settings(spec -> spec
.idleTimeout(Duration.ofSeconds(5))
.maxData(10_000_000)
.maxStreamDataBidirectionalLocal(1_000_000));
And it works!