Open marcindulak opened 3 months ago
/cc @marten-seemann do you know how tls.Config.KeyLogWriter
interacts with quic-go? Should we expect any kind of problem?
Sorry for the late reply. quic-go passes the tls.Config.KeyLogWriter
through to crypto/tls, so it should work exactly as expected.
There appears to be an issue with Wireshark though that prevents it to decrypt certain quic-go QUIC transfers, presumable because it doesn't like how quic-go is switching QUIC connection IDs. I just debugged this and filed a Wireshark issue: https://gitlab.com/wireshark/wireshark/-/issues/19977.
I'm not sure this is caddy issue, however I don't experience this problem against nginx.
To reproduce
Create Caddyfile in the current working directory
Configure caddy on debian:unstable, which currently provides curl with http3 support 8.9.0. Note: this is downloading caddy for Mac M? arm64, otherwise use amd64
Start packet capture with tcpdump
In other terminal, make curl HTTP3 request. Note that the server returns the expected response
Hello, HTTP version HTTP/3.0!
Stop the packet capture and decrypt the traffic
Result
The caddy server (v2.8.4 h1:q3pe0wpBj1OcHFZ3n/1nl4V4bxBrYoSoab7rL9BMYNk=) response is successful according to the curl output
However, there seems to be no HTTP3 response containing the actual HTML body. This is shown by reading the packet capture with
docker exec -it caddy sh -c "cd /mnt && tshark -r test.pcapng"
, where HTTP3 stops at HEADERSCompare this with a similar (though performed between two containers instead of localhost) packet capture obtained from nginx/1.27.0 (built with OpenSSL 3.0.11 19 Sep 2023 (running with OpenSSL 3.0.13 30 Jan 2024), which also contains DATA
The pcapng files are attached.
caddy.pcapng.gz nginx.pcapng.gz