A recent Nginx release allows me to set listen 443 quic; to enable HTTP/3. Neat. I had been using HTTP/2 with TLS1.3 before, so I did not expect that change much, just optimize round trips with otherwise matching security properties.

One major change, though: Firefox will not send client certificates. Though it perfectly could:

  • Same RSA+sha256 certificate fed to aioquic HTTP/3 example authenticates to same website.
  • Same RSA+sha256 certificate is offered by identical Firefox binary & profile via HTTP 1 or 2

Unfortunately, Firefox does not tell me for what reason it choses to disregard the certificate request only while using HTTP/3. Am I missing some difference between TLS1.3 via TCP and QUIC?

  • Unordered packets complicate things a bit.. Maybe some security guarantee could not be upheld if this worked in QUIC exactly as it does over TCP?
  • Renegotiating while multiplexing is not an option, right? I heard it was outright banned in HTTP/2 which HTTP/3 keeps up.
  • Maybe some limitations on which algorithms the certificate has to use? Yet the transport should not change the authentication part of the whole TLS dance, as that had already been properly separated from record protection when upgrading from TLS 1.2.
  • Noteworthy, but not an answer: QUIC differs in that to mitigate packet reflection attacks the server may only return to unverified sources only 3 times as much as received. But not only does this not happen with small server certificates, it should also at most delay things until eventual recovery via probes; not changing the state transitions of the handshake.
    – anx
    Jul 11, 2023 at 4:03

1 Answer 1


I found none. But someone might still identify such, during work that appears to have not started yet:

It just so happens that Mozilla had implemented their QUIC library in Rust - using interfaces not entirely matching those of existing code in analogous role. This will hopefully reduce the cost of writing and maintaining secure & correct code. But it also means that every feature not (yet) receiving explicit patches to adapt to the new interface and design review to re-evaluate its impact with the new language and protocol, is dropped at that boundary.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .