News for hackers. Stuff that matters.
Re:Why HTTP/3 is eating the world by superkuh on Thursday October 05, 2023 @12:04PM (#37780376)
Yes, because it's mandatory. If the HTTP/3 implementations allowed self-signed certs it'd be okay. But they don't. Or if HTTP/3 allowed the option of connections without TLS but defaulted to TLS, that'd be okay. But it doesn't.
Re:Why HTTP/3 is eating the world by afiori on Thursday October 05, 2023 @12:14PM (#37780484)
> If the HTTP/3 implementations allowed self-signed certs

Is it forbidden at the protocol level or by the implementations?

Re:Why HTTP/3 is eating the world by treesknees on Thursday October 05, 2023 @12:43PM (#37780844)
It's an implementation limit that at least Chrome (and possibly other browsers) are enforcing for QUIC connections. The TLS certificate must be signed by a trusted CA. [1]

There does appear to be cli flags to change the behavior, but I don't see how you'd do that on mobile or embedded browsers.

[1]https://www.smashingmagazine.com/2021/09/http3-practical-dep...

Re:Why HTTP/3 is eating the world by remram on Thursday October 05, 2023 @01:33PM (#37781446)
You can add trusted CAs to your system though...
Re:Why HTTP/3 is eating the world by treesknees on Thursday October 05, 2023 @11:13PM (#37786788)
That is true. But an actual self-signed certificate is not signed by any CA, so it still can't be used with QUIC connections (with specific clients such as Chrome, anyway.)
Re:Why HTTP/3 is eating the world by tambre on Thursday October 05, 2023 @12:54PM (#37780992)
RFC 9114 §3.1 ¶2 [0] requires TLS certificates, but I imagine you can easily modify existing implementations to remove this restriction. And even if the spec didn't require it I'd expect all major implementors (web browsers) to still impose this. I imagine something like curl has an opt-out for this (-k?).

Note that the spec essentially says "if verification fails don't trust this connection". What not trusting means is up to the application. For browsers that's probably equivalent to not allowing the connection at all.

[0] https://www.rfc-editor.org/rfc/rfc9114#section-3.1-2

Re:Why HTTP/3 is eating the world by paulddraper on Thursday October 05, 2023 @12:55PM (#37781009)
HTTP/3 allows self-signed certs.

Chrome does not. But that choice is orthogonal to protocol.

Re:Why HTTP/3 is eating the world by vinay_ys on Thursday October 05, 2023 @01:58PM (#37781784)
I didn't know chrome didn't allow self-signed certificates. Since when?
Re:Why HTTP/3 is eating the world by AgentME on Thursday October 05, 2023 @02:40PM (#37782359)
The user can add self-signed certificates. Random websites using self-signed certificates won't work without that extra configuration from the user.
Re:Why HTTP/3 is eating the world by dark-star on Thursday October 05, 2023 @03:47PM (#37783377)
I'm pretty sure the old "thisisunsafe" trick will still work ...
Re:Why HTTP/3 is eating the world by giantrobot on Thursday October 05, 2023 @02:08PM (#37781933)
> Chrome does not. But that choice is orthogonal to protocol.

Which means HTTP/3 de facto doesn't support self-signed certificates. Once Chrome disables HTTP 1.1/2 which it will at some point in the name of security or performance, you'll only be able to exist on the web with a CA signed certificate.

Re:Why HTTP/3 is eating the world by superkuh on Thursday October 05, 2023 @03:38PM (#37783269)
Yeah, it's difficult for me to always add the qualifer, "HTTP/3 allows self-signed certs but no implementation that exists in any browser allows self signed certs".
Re:Why HTTP/3 is eating the world by paulddraper on Thursday October 05, 2023 @03:52PM (#37783445)
The original comment was opposition to HTTP/3 because of mandatory secure connections.

In reality, the opposition is misdirected; it is Chrome that requires secure connections, not HTTP/3.

Re:Why HTTP/3 is eating the world by nightpool on Thursday October 05, 2023 @03:55PM (#37783485)
Plenty of browsers allow self-signed certs—Firefox and Safari, to the best of my knowledge, treat HTTP/3 certs exactly the same as they treat HTTP/2 and HTTP/1.1 certs. Chrome has taken the position that it will no longer allow self-signed Root CAs for HTTP/3 websites, to prevent SSL interception with companies intercepting all of your traffic. For personal use, you can always whitelist an individual certificate using a CLI flag without allowing a trusted root CA
Re:Why HTTP/3 is eating the world by superkuh on Thursday October 05, 2023 @10:08PM (#37786476)
My testing in the past seems to indicate you're wrong. Firefox does not support setting up HTTP/3 connections without CA TLS. Unless they've changed it since version 115 esr. While the neqo lib they use for HTTP/3 does technically allow it unless you compile it yourself with all the flags required for it FF ships with neqo having CA TLS required and no support for self-signed certs when setting up HTTP/3 connections.

I'd love to be wrong or shown a newer version that does allow these things. It'd be a huge load off my mind.

Re:Why HTTP/3 is eating the world by PH95VuimJjqBqy on Thursday October 05, 2023 @01:09PM (#37781193)
For some reason I wasn't aware of that, but I agree with you.

There's no reason for to mandate TLS for everything just because of a protocol.

Re:Why HTTP/3 is eating the world by cortesoft on Thursday October 05, 2023 @01:46PM (#37781625)
You can use self signed certs, you just have to add your CA as a trusted CA.
Re:Why HTTP/3 is eating the world by Dylan16807 on Thursday October 05, 2023 @02:25PM (#37782147)
"A self-signed certificate is one that is not signed by a CA at all – neither private nor public. In this case, the certificate is signed with its own private key, instead of requesting it from a public or a private CA."

This definition sounds right to me. Do you disagree with it?

I get what you're saying, that you can set up a certificate yourself. But you can't accept a certificate someone else set up. (in Chrome)

Re:Why HTTP/3 is eating the world by poizan42 on Thursday October 05, 2023 @02:41PM (#37782364)
That's definitely the wrong definition. A self-signed certificate is a certificate that is signed by the private key corresponding to the public key contained in that certificate - in other words it's signed by itself.

In fact every CA root are by necessity self-signed and therefore signed by a CA (i.e. itself)

Re:Why HTTP/3 is eating the world by Dylan16807 on Thursday October 05, 2023 @03:00PM (#37782682)
I don't think they were talking about certificates that were also CAs. It's not wrong, it's insufficiently precise.

Anyway, your definition is clearer, but it still supports the point I was trying to make. You don't "add your CA" in order to use self-signed certs. You do that to use a private CA that will sign all your certs. And doing so only allows you to use websites you signed, not websites other people signed. It would be a terrible idea to add anyone else's CA, and you can't easily use your CA to slap your signature onto websites other people signed. Adding your own CA is a completely different situation from trying to visit a self-signed site.

Re:Why HTTP/3 is eating the world by dharmab on Thursday October 05, 2023 @01:46PM (#37781635)
If you need certs for local dev, use a local CA. Tools like mkcert automate this.

If you need certs if a private network, either use Let's Encrypt/ACME or run your own CA and add the CA cert to your machines.