Indeed I'm using a self signed cert created by mkcert for the server. I created a keystore out of it, and used the same sslcontext for both the server and the client. Attached are my logs.
On Thu, Nov 6, 2025 at 10:38 AM Daniel Fuchs <[email protected]> wrote: > Hi Joshua, > > Thanks for reporting this and for trying out HTTP/3! > > I have logged https://bugs.openjdk.org/browse/JDK-8371413 and we will > investigate. > > A couple of question though: > > 1. if I understand correctly the server was using a self-signed > certificate and the client truststore didn't contain it. Is > that a fair description of the set up? > > 2. would it possible for you to share the client logs when the issue > occurred? > > Running the client with: > > > -Ddk.httpclient.HttpClient.log=requests,headers,errors,http3,quic:control:retransmit > > would help us diagnose the issue. > > Note: the mailing list might reject the attachment, let me know if > that happens. > > best regards, > > -- daniel > > On 06/11/2025 15:15, Josiah Noel wrote: > > I've been testing the Http3 support on windows 11 with build > > 26-ea+22-2263, and my request was seemingly just timing out. > > > > After like 3 hours of fiddling, I realized that I forgot to import the > > mkcert rootCA I was using into the jdk cacerts. > > > > Long story short, when I ran `keytool -import -trustcacerts -noprompt > > -alias mkcert-root-ca -file "$(mkcert -CAROOT)/rootCA.pem" -keystore > > "$JAVA_HOME/lib/security/cacerts" -storepass changeit` then it > > suddenly began to work. > > > > Perchance is it possible to get a clearer error message? > >
WARNING: Unknown module: io.avaje.jex.test specified to --add-reads Nov 06, 2025 11:37:03 AM io.avaje.jex.core.BootstrapServer start INFO: Avaje Jex started class io.avaje.jex.http3.flupke.impl.FlupkeHttpServer in 194ms on https://0:0:0:0:0:0:0:0:8080 Nov 06, 2025 11:37:04 AM jdk.internal.net.http.Http3ClientImpl getConnectionFor INFO: HTTP3: getConnectionFor exchange https://localhost:8080 GET #1 Nov 06, 2025 11:37:04 AM jdk.internal.net.http.Http3ClientImpl getConnectionFor INFO: HTTP3: Creating connection for Exchange https://localhost:8080 GET #1 Nov 06, 2025 11:37:04 AM jdk.internal.net.http.HttpQuicConnection logAltSvcFor INFO: ALTSVC: No AltService found for localhost:8080 Nov 06, 2025 11:37:04 AM jdk.internal.net.http.quic.QuicClient chooseEndpoint INFO: QUIC: Adding new endpoint: QuicEndpoint(HttpClientImpl(1)-0) Nov 06, 2025 11:37:04 AM jdk.internal.net.http.quic.QuicEndpoint lambda$create$1 INFO: QUIC: Initial receive buffer size is: 65536 Nov 06, 2025 11:37:04 AM jdk.internal.net.http.quic.QuicEndpoint lambda$create$1 INFO: QUIC: Initial send buffer size is: 65536 Nov 06, 2025 11:37:04 AM jdk.internal.net.http.Http3Connection createAsync INFO: HTTP3: Http3Connection.createAsync: Got HttpQuicConnection for https://localhost:8080 GET #1 is: quic:1 Nov 06, 2025 11:37:04 AM jdk.internal.net.http.quic.QuicConnectionImpl startInitialTimer INFO: QUIC: QuicClientConnection(1): Arming quic initial timer for PT29.9998017S Nov 06, 2025 11:37:04 AM jdk.internal.net.http.quic.QuicConnectionImpl sendFirstInitialPacket INFO: QUIC: QuicClientConnection(1): connectionId: a2185e4ac3afe4deda4fc7dc14, QuicEndpoint(HttpClientImpl(1)-0): QuicEndpoint(HttpClientImpl(1)-0) - /[0:0:0:0:0:0:0:0]:50781 Nov 06, 2025 11:37:04 AM jdk.internal.net.http.quic.IdleTimeoutManager checkUpdateIdleTimeout INFO: QUIC: QuicClientConnection(1) idle connection timeout updated to 30,000 milli seconds Nov 06, 2025 11:37:04 AM jdk.internal.net.http.quic.PacketSpaceManager$PacketTransmissionTask logNoDeadline INFO: QUIC: QuicClientConnection(1): INITIAL no deadline, task unscheduled Nov 06, 2025 11:37:04 AM jdk.internal.net.http.quic.PacketSpaceManager close INFO: QUIC: QuicClientConnection(1) closing packet space INITIAL Nov 06, 2025 11:37:04 AM jdk.internal.net.http.quic.ConnectionTerminatorImpl immediateClose INFO: QUIC: QuicClientConnection(1) entering closing state, code 0x12e - jdk.internal.net.quic.QuicTransportException: certificate_unknown Nov 06, 2025 11:37:04 AM jdk.internal.net.http.quic.QuicConnectionImpl pushDatagram INFO: QUIC: QuicClientConnection(1) OUT: HANDSHAKE(pn:2, size=70, frames:[ConnectionCloseFrame[type=0x1c, errorCode=0x12e, tlsAlertDescription=46, errorFrameType=0x0, reason=certificate_unknown]]) Nov 06, 2025 11:37:04 AM jdk.internal.net.http.quic.PacketSpaceManager close INFO: QUIC: QuicClientConnection(1) closing packet space HANDSHAKE Nov 06, 2025 11:37:04 AM jdk.internal.net.http.quic.PacketSpaceManager close INFO: QUIC: QuicClientConnection(1) closing packet space APPLICATION Nov 06, 2025 11:37:04 AM jdk.internal.net.http.Http3ClientImpl connectionCompleted INFO: HTTP3: Checking waiters on completed connection null to https:localhost:8080 created for https://localhost:8080 GET #1 Nov 06, 2025 11:37:04 AM jdk.internal.net.http.quic.PacketSpaceManager$PacketTransmissionTask logNoDeadline INFO: QUIC: QuicClientConnection(1): HANDSHAKE no deadline, task unscheduled Nov 06, 2025 11:37:04 AM jdk.internal.net.http.quic.PacketSpaceManager$PacketTransmissionTask logNoDeadline INFO: QUIC: QuicClientConnection(1): APPLICATION no deadline, task unscheduled Nov 06, 2025 11:37:04 AM jdk.internal.net.http.quic.ConnectionTerminatorImpl immediateClose INFO: QUIC: QuicClientConnection(1) connection has now transitioned to closing state Nov 06, 2025 11:37:04 AM jdk.internal.net.http.Http3ClientImpl connectionCompleted0 INFO: HTTP3: No HTTP/3 connection created for requests to https:localhost:8080, will fail or downgrade: waiters[0](completed:0, retried:0, errors:0) - originally created for https://localhost:8080 GET #1
