tailscale/control/controlclient
Anton Tolchanov 01847e0123 ipn/ipnlocal: discard node keys that have been rotated out
A non-signing node can be allowed to re-sign its new node keys following
key renewal/rotation (e.g. via `tailscale up --force-reauth`). To be
able to do this, node's TLK is written into WrappingPubkey field of the
initial SigDirect signature, signed by a signing node.

The intended use of this field implies that, for each WrappingPubkey, we
typically expect to have at most one active node with a signature
tracing back to that key. Multiple valid signatures referring to the
same WrappingPubkey can occur if a client's state has been cloned, but
it's something we explicitly discourage and don't support:
https://tailscale.com/s/clone

This change propagates rotation details (wrapping public key, a list
of previous node keys that have been rotated out) to netmap processing,
and adds tracking of obsolete node keys that, when found, will get
filtered out.

Updates tailscale/corp#19764

Signed-off-by: Anton Tolchanov <anton@tailscale.com>
2024-06-03 10:56:09 +01:00
..
auto.go control/controlclient: delete unused Client.Login Oauth2Token field 2024-05-17 19:51:18 -07:00
client.go control/controlclient: delete unused Client.Login Oauth2Token field 2024-05-17 19:51:18 -07:00
controlclient_test.go all: use Go 1.22 range-over-int 2024-04-16 15:32:38 -07:00
direct_test.go net/netns, net/dns/resolver, etc: make netmon required in most places 2024-04-27 12:17:45 -07:00
direct.go ipn/ipnlocal: discard node keys that have been rotated out 2024-06-03 10:56:09 +01:00
map_test.go all: use Go 1.22 range-over-int 2024-04-16 15:32:38 -07:00
map.go tailcfg,all: add/plumb Node.IsJailed 2024-05-06 15:32:22 -07:00
noise_test.go net/netns, net/dns/resolver, etc: make netmon required in most places 2024-04-27 12:17:45 -07:00
noise.go health, all: remove health.Global, finish plumbing health.Tracker 2024-04-26 12:03:11 -07:00
sign_supported_test.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
sign_supported.go control/controlclient: support certstore without cgo 2023-10-20 15:17:32 -04:00
sign_unsupported.go control/controlclient: support certstore without cgo 2023-10-20 15:17:32 -04:00
sign.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
status.go all: implement AppendText alongside MarshalText (#9207) 2023-09-01 18:15:19 -07:00