The webapi/WUI should have https enabled by default #997
Labels
No Label
0.2.0
0.3.0
0.4.0
0.5.0
0.5.1
0.6.0
0.6.1
0.7.0
0.8.0
0.9.0
1.0.0
1.1.0
1.10.0
1.10.1
1.10.2
1.10a2
1.11.0
1.12.0
1.12.1
1.13.0
1.14.0
1.15.0
1.15.1
1.2.0
1.3.0
1.4.1
1.5.0
1.6.0
1.6.1
1.7.0
1.7.1
1.7β
1.8.0
1.8.1
1.8.2
1.8.3
1.8β
1.9.0
1.9.0-s3branch
1.9.0a1
1.9.0a2
1.9.0b1
1.9.1
1.9.2
1.9.2a1
LeastAuthority.com automation
blocker
cannot reproduce
cloud-branch
code
code-dirnodes
code-encoding
code-frontend
code-frontend-cli
code-frontend-ftp-sftp
code-frontend-magic-folder
code-frontend-web
code-mutable
code-network
code-nodeadmin
code-peerselection
code-storage
contrib
critical
defect
dev-infrastructure
documentation
duplicate
enhancement
fixed
invalid
major
minor
n/a
normal
operational
packaging
somebody else's problem
supercritical
task
trivial
unknown
was already fixed
website
wontfix
worksforme
No Milestone
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Reference: tahoe-lafs/trac-2024-07-25#997
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
In the spirit of making the defaults secure, the web interface should have https enabled by default. Plain http is only secure if you assume users will always interact with the server over a secure network, but practice shows that people often connect to remote servers.
This implies that Tahoe should ship with some certificates. These can be any dummy self-signed certs, since we just need secure key negotiation.
https will secure the contents of the file, but not the CAPS. The CAPs will still be available to every router/hub/switch along the way. Transmitting the CAP in the URL makes keeping secrets difficult.
@jsgf: There is no secure key negotiation with anonymous peers. That is, self-signed certificates will not (by themselves) suffice to protect HTTPS communications across an insecure network (== any non-isolated network). SSH-style trust-on-first-use + continuity of identity might suffice, however. Unfortunately, no browser makes that easy/possible right now. This is a browser bug, but we have to live with it for now.
An alternative that sort-of-works with current browsers is to generate a new CA certificate as part of installing the WUI, and then instruct users to add that CA to their browsers' CA certificate stores.
However, browsers still provide no easy way for users to distinguish between an HTTPS server authenticated by their WUI's CA and by any random (potentially malicious/incompetent/compromised, yet trusted) CA.
@imhavoc: No, URLs are not exposed to routers/hubs/switches when using HTTPS. The entire HTTP conversation is encapsulated inside TLS; midpoints see only TLS setup and encrypted data messages.
Replying to chris:
Quite right, it doesn't help with MITM. But it is an improvement over plaintext.
Yes. But installing CA certs is pretty tricky to do from browser to browser. But it should be managed somehow, because a self-signed cert will cause browsers to whine.
Replying to imhavoc:
That's not correct; request URLs are encrypted by https.
It does, but for other reasons ([[tickets tagged 'capleak']query:status!=closed&keywords~=capleak).
I really want to encourage users to run their own gateway. I'm a little bit nervous that turning on SSL by default will look like we're suggesting people talk to somebody else's gateway, and would imply that eavesdroppers on the wire between your browser and that gateway are more of a concern than whether your gateway is acting in your own best interests. I recognize that using SSL (even on localhost) is strictly equal-or-more-secure than non-SSL, but I do wonder if it sends the wrong message to users.
Asking users to install a new CA root feels wrong to me.. it teaches them to "improve" their security by adding vulnerabilities into their browser.
The real question is what secrets (i.e. the filecaps) you're revealing to which parties, and whether those are the parties you meant to reveal them to. "http://127.0.0.1/" in the browser is harder to spoof than the collection of (browser shows usual spoofable lock icon)+(address bar shows meaningful DNS name)+(user remembers mapping from DNS name to which gateway they meant to use)+(CA/PKI system is uncompromised and maps DNS name / cert name to the expected cert)+(gateway isn't logging/revealing your filecaps).
Maybe we should discuss the properties of a web gateway which only accepted connections from localhost?