syncthing/lib
Jakob Borg 718b1ce2b7
chore(discovery,upgrade): use regular TLS certificate verification (#9673)
This changes the two remaining instances where we use insecure HTTPS to
use standard HTTPS certificate verification.

When we introduced these things, almost a decade ago, HTTPS certificates
were expensive and annoying to get, much of the web was still HTTP, and
many devices seemed to not have up-to-date CA bundles.

Nowadays _all_ of the web is HTTPS and I'm skeptical that any device can
work well without understanding LetsEncrypt certificates in particular.

Our current discovery servers use hardcoded certificates which has
several issues:
- Not great for security if it leaks as there is no way to rotate it
- Not great for infrastructure flexibility as we can't use many load
balancer or TLS termination services
- The certificate is a very oddball ECDSA-SHA384 type certificate which
has higher CPU cost than a more regular certificate, which has real
effects on our infrastructure

Using normal TLS certificates here improves these things.

I expect there will be some very few devices out there for which this
doesn't work. For the foreseeable future they can simply change the
config to use the old URLs and parameters -- it'll be years before we
can retire those entirely.

For the upgrade client this simply seems like better hygiene. While our
releases are signed anyway, protecting the metadata exchange is _better_
and, again, I doubt many clients will fail this today.
2024-09-11 09:29:19 +02:00
..
api lib/api: Correct ordering of Accept-Language codes by weight (fixes #9670) (#9671) 2024-09-02 10:15:04 +02:00
assets lib/assets: MIME types, time formats (#8351) 2022-05-22 22:10:18 +02:00
automaxprocs all: Use own automaxprocs package that doesn't log (ref #9436) (#9437) 2024-02-27 13:05:19 +01:00
beacon lib/beacon, lib/discover: Send IPv4 limited broadcast when address listing fails (fixes #1628) (#9087) 2023-09-12 14:28:17 +02:00
build lib/sha256: Remove it (#9643) 2024-08-10 12:58:20 +01:00
config chore(discovery,upgrade): use regular TLS certificate verification (#9673) 2024-09-11 09:29:19 +02:00
connections lib/connections: Use proper errors.Is check (#9538) 2024-05-16 07:01:16 +00:00
db lib/model, lib/protocol: Index sending/receiving debugging (#9657) 2024-08-28 15:00:19 +02:00
dialer lib: Removal global connection registry (#8254) 2022-04-09 16:04:56 +02:00
discover lib/beacon, lib/discover: Send IPv4 limited broadcast when address listing fails (fixes #1628) (#9087) 2023-09-12 14:28:17 +02:00
events all: Add Prometheus-style metrics to expose some internal performance counters (fixes #5175) (#9003) 2023-08-04 19:57:30 +02:00
fs lib/fs: Add test reproducing missing mtimefs issue (ref #9677) (#9687) 2024-09-10 13:36:17 +02:00
geoip lib/geoip, cmd/relaypoolsrv, cmd/ursrv: Automatically manage GeoIP updates (#9342) 2024-05-18 20:31:49 +03:00
httpcache cmd/stupgrades: Cache should apply to HEAD as well as GET 2023-02-22 12:22:52 +01:00
ignore lib/sha256: Remove it (#9643) 2024-08-10 12:58:20 +01:00
locations all: minimal set of changes for iOS app (#9619) 2024-07-31 07:31:14 +02:00
logger all: Use some Go 1.21 features (#9409) 2024-02-10 21:02:42 +01:00
model lib/model, lib/protocol: Index sending/receiving debugging (#9657) 2024-08-28 15:00:19 +02:00
nat lib/nat: Don't crash on empty address list (fixes #9503) (#9504) 2024-04-11 13:23:29 +02:00
netutil all: Remove lib/util package (#9049) 2023-08-21 19:44:33 +02:00
osutil all: minimal set of changes for iOS app (#9619) 2024-07-31 07:31:14 +02:00
pmp lib/nat, lib/upnp: IPv6 UPnP support (#9010) 2023-12-11 07:36:18 +01:00
protocol lib/model, lib/protocol: Index sending/receiving debugging (#9657) 2024-08-28 15:00:19 +02:00
rand all: Remove unused method receivers (#8462) 2022-07-28 17:32:45 +02:00
rc all: Remove unused method receivers (#8462) 2022-07-28 17:32:45 +02:00
relay cmd/strelaysrv: Add optional auth token (fixes #3987) (#8561) 2022-10-01 20:41:02 +01:00
scanner lib/sha256: Remove it (#9643) 2024-08-10 12:58:20 +01:00
semaphore all: Remove lib/util package (#9049) 2023-08-21 19:44:33 +02:00
signature lib/sha256: Remove it (#9643) 2024-08-10 12:58:20 +01:00
sliceutil all: Use some Go 1.21 features (#9409) 2024-02-10 21:02:42 +01:00
stats all: Truncate some timestamps (fixes #7457) (#7459) 2021-03-12 10:35:10 +01:00
stringutil all: Remove lib/util package (#9049) 2023-08-21 19:44:33 +02:00
structutil all: Remove lib/util package (#9049) 2023-08-21 19:44:33 +02:00
stun all: Remove lib/util package (#9049) 2023-08-21 19:44:33 +02:00
svcutil all: Remove lib/util package (#9049) 2023-08-21 19:44:33 +02:00
sync lib/model: Use a single lock (phase two: cleanup) (#9276) 2023-12-11 22:06:45 +01:00
syncthing lib/syncthing: Add wrapper for access to model (#9627) 2024-08-11 20:20:43 +02:00
testutil all: Remove lib/util package (#9049) 2023-08-21 19:44:33 +02:00
tlsutil lib/tlsutil: Use crypto.Signer interface (#8526) 2022-09-09 14:22:38 +02:00
upgrade chore(discovery,upgrade): use regular TLS certificate verification (#9673) 2024-09-11 09:29:19 +02:00
upnp lib/nat, lib/upnp: IPv6 UPnP support (#9010) 2023-12-11 07:36:18 +01:00
ur all: Remove lib/util package (#9049) 2023-08-21 19:44:33 +02:00
versioner all: Use some Go 1.21 features (#9409) 2024-02-10 21:02:42 +01:00
watchaggregator lib/config, lib/watchaggregator: Add config for max FS watcher delay (#9558) 2024-05-23 16:21:00 +02:00
weakhash all: Remove usage of deprecated io/ioutil (#7971) 2021-11-22 08:59:47 +01:00