diff --git a/metropolis/cli/metroctl/BUILD.bazel b/metropolis/cli/metroctl/BUILD.bazel
index 50dc1eb..5372cc5 100644
--- a/metropolis/cli/metroctl/BUILD.bazel
+++ b/metropolis/cli/metroctl/BUILD.bazel
@@ -42,7 +42,6 @@
         "//metropolis/cli/flagdefs",
         "//metropolis/cli/metroctl/core",
         "//metropolis/node",
-        "//metropolis/node/core/identity",
         "//metropolis/node/core/rpc",
         "//metropolis/node/core/rpc/resolver",
         "//metropolis/proto/api",
diff --git a/metropolis/cli/metroctl/cmd_node.go b/metropolis/cli/metroctl/cmd_node.go
index d7a23ee..30dd965 100644
--- a/metropolis/cli/metroctl/cmd_node.go
+++ b/metropolis/cli/metroctl/cmd_node.go
@@ -17,7 +17,6 @@
 
 	"source.monogon.dev/go/clitable"
 	"source.monogon.dev/metropolis/cli/metroctl/core"
-	"source.monogon.dev/metropolis/node/core/identity"
 	"source.monogon.dev/version"
 
 	apb "source.monogon.dev/metropolis/proto/api"
@@ -154,13 +153,12 @@
 
 		for _, n := range nodes {
 			// Filter the information we want client-side.
-			nid := identity.NodeID(n.Pubkey)
 			if len(qids) != 0 {
-				if _, e := qids[nid]; !e {
+				if _, e := qids[n.Id]; !e {
 					continue
 				}
 			}
-			if excludedNodes[nid] {
+			if excludedNodes[n.Id] {
 				continue
 			}
 
@@ -450,8 +448,7 @@
 	for _, n := range nodes {
 		// Filter the information we want client-side.
 		if len(qids) != 0 {
-			nid := identity.NodeID(n.Pubkey)
-			if _, e := qids[nid]; !e {
+			if _, e := qids[n.Id]; !e {
 				continue
 			}
 		}
diff --git a/metropolis/cli/metroctl/cmd_node_approve.go b/metropolis/cli/metroctl/cmd_node_approve.go
index 294f8c3..a70f6b3 100644
--- a/metropolis/cli/metroctl/cmd_node_approve.go
+++ b/metropolis/cli/metroctl/cmd_node_approve.go
@@ -10,7 +10,6 @@
 	"github.com/spf13/cobra"
 
 	"source.monogon.dev/metropolis/cli/metroctl/core"
-	"source.monogon.dev/metropolis/node/core/identity"
 	"source.monogon.dev/metropolis/proto/api"
 )
 
@@ -28,7 +27,7 @@
 // nodeById returns the node matching id, if it exists within nodes.
 func nodeById(nodes []*api.Node, id string) *api.Node {
 	for _, n := range nodes {
-		if identity.NodeID(n.Pubkey) == id {
+		if n.Id == id {
 			return n
 		}
 	}
@@ -52,7 +51,7 @@
 		// If no id was given, just list the nodes pending approval.
 		if len(nodes) != 0 {
 			for _, n := range nodes {
-				fmt.Println(identity.NodeID(n.Pubkey))
+				fmt.Println(n.Id)
 			}
 		} else {
 			log.Print("There are no nodes pending approval at this time.")
diff --git a/metropolis/cli/metroctl/table_node.go b/metropolis/cli/metroctl/table_node.go
index 9c79489..2f8317d 100644
--- a/metropolis/cli/metroctl/table_node.go
+++ b/metropolis/cli/metroctl/table_node.go
@@ -6,7 +6,6 @@
 	"strings"
 
 	"source.monogon.dev/go/clitable"
-	"source.monogon.dev/metropolis/node/core/identity"
 	apb "source.monogon.dev/metropolis/proto/api"
 	cpb "source.monogon.dev/metropolis/proto/common"
 	"source.monogon.dev/version"
@@ -15,7 +14,7 @@
 func nodeEntry(n *apb.Node) clitable.Entry {
 	res := clitable.Entry{}
 
-	res.Add("node id", identity.NodeID(n.Pubkey))
+	res.Add("node id", n.Id)
 	state := n.State.String()
 	state = strings.ReplaceAll(state, "NODE_STATE_", "")
 	res.Add("state", state)
diff --git a/metropolis/node/core/cluster/cluster_bootstrap.go b/metropolis/node/core/cluster/cluster_bootstrap.go
index fdfb44a..820dffc 100644
--- a/metropolis/node/core/cluster/cluster_bootstrap.go
+++ b/metropolis/node/core/cluster/cluster_bootstrap.go
@@ -93,6 +93,7 @@
 	if err != nil {
 		return fmt.Errorf("could not generate node keypair: %w", err)
 	}
+	id := identity.NodeID(pub)
 	supervisor.Logger(ctx).Infof("Bootstrapping: node public key: %s", hex.EncodeToString(pub))
 
 	jpub, jpriv, err := ed25519.GenerateKey(rand.Reader)
@@ -104,7 +105,7 @@
 	directory := &cpb.ClusterDirectory{
 		Nodes: []*cpb.ClusterDirectory_Node{
 			{
-				Id: identity.NodeID(pub),
+				Id: id,
 				Addresses: []*cpb.ClusterDirectory_Node_Address{
 					{
 						Host: "127.0.0.1",
@@ -157,6 +158,7 @@
 	}
 
 	bd := roleserve.BootstrapData{}
+	bd.Node.ID = id
 	bd.Node.PrivateKey = priv
 	bd.Node.ClusterUnlockKey = cuk
 	bd.Node.NodeUnlockKey = nuk
diff --git a/metropolis/node/core/consensus/BUILD.bazel b/metropolis/node/core/consensus/BUILD.bazel
index ac048d6..5c58c2a 100644
--- a/metropolis/node/core/consensus/BUILD.bazel
+++ b/metropolis/node/core/consensus/BUILD.bazel
@@ -15,7 +15,6 @@
         "//go/logging",
         "//metropolis/node",
         "//metropolis/node/core/consensus/client",
-        "//metropolis/node/core/identity",
         "//metropolis/node/core/localstorage",
         "//osbase/event",
         "//osbase/event/memory",
diff --git a/metropolis/node/core/consensus/configuration.go b/metropolis/node/core/consensus/configuration.go
index bb3db82..071f5f5 100644
--- a/metropolis/node/core/consensus/configuration.go
+++ b/metropolis/node/core/consensus/configuration.go
@@ -13,7 +13,6 @@
 	"go.etcd.io/etcd/server/v3/embed"
 
 	"source.monogon.dev/metropolis/node"
-	"source.monogon.dev/metropolis/node/core/identity"
 	"source.monogon.dev/metropolis/node/core/localstorage"
 	"source.monogon.dev/osbase/pki"
 )
@@ -31,8 +30,11 @@
 	// If that data is not present, a new cluster will be bootstrapped.
 	JoinCluster *JoinCluster
 
+	// NodeID is the node ID, which is also used to identify consensus nodes.
+	NodeID string
+
 	// NodePrivateKey is the node's main private key which is also used for
-	// Metropolis PKI. The same key will be used to identify consensus nodes, but
+	// Metropolis PKI. The same key will be used for consensus nodes, but
 	// different certificates will be used.
 	NodePrivateKey ed25519.PrivateKey
 
@@ -85,12 +87,11 @@
 // over TLS. This requires TLS credentials to be present on disk, and will be
 // disabled for bootstrapping the instance.
 func (c *Config) build(enablePeers bool) *embed.Config {
-	nodeID := identity.NodeID(c.nodePublicKey())
 	port := int(node.ConsensusPort)
 	if p := c.testOverrides.externalPort; p != 0 {
 		port = p
 	}
-	host := nodeID
+	host := c.NodeID
 	if c.testOverrides.externalAddress != "" {
 		host = c.testOverrides.externalAddress
 	}
@@ -101,7 +102,7 @@
 
 	cfg := embed.NewConfig()
 
-	cfg.Name = nodeID
+	cfg.Name = c.NodeID
 	cfg.ClusterState = "existing"
 	cfg.InitialClusterToken = "METROPOLIS"
 	cfg.Logger = "zap"
@@ -147,7 +148,7 @@
 		}}
 	}
 
-	cfg.InitialCluster = cfg.InitialClusterFromName(nodeID)
+	cfg.InitialCluster = cfg.InitialClusterFromName(c.NodeID)
 	if c.JoinCluster != nil {
 		for _, n := range c.JoinCluster.ExistingNodes {
 			cfg.InitialCluster += "," + n.connectionString()
diff --git a/metropolis/node/core/consensus/consensus.go b/metropolis/node/core/consensus/consensus.go
index 8da53d6..f8861a7 100644
--- a/metropolis/node/core/consensus/consensus.go
+++ b/metropolis/node/core/consensus/consensus.go
@@ -87,7 +87,6 @@
 
 import (
 	"context"
-	"crypto/ed25519"
 	"crypto/x509"
 	"crypto/x509/pkix"
 	"errors"
@@ -102,7 +101,6 @@
 	"go.etcd.io/etcd/server/v3/embed"
 
 	"source.monogon.dev/metropolis/node/core/consensus/client"
-	"source.monogon.dev/metropolis/node/core/identity"
 	"source.monogon.dev/osbase/event"
 	"source.monogon.dev/osbase/event/memory"
 	"source.monogon.dev/osbase/logtree/unraw"
@@ -131,16 +129,16 @@
 	}
 }
 
-func pkiPeerCertificate(pubkey ed25519.PublicKey, extraNames []string) x509.Certificate {
+func pkiPeerCertificate(nodeID string, extraNames []string) x509.Certificate {
 	return x509.Certificate{
 		Subject: pkix.Name{
-			CommonName: identity.NodeID(pubkey),
+			CommonName: nodeID,
 		},
 		KeyUsage: x509.KeyUsageDigitalSignature | x509.KeyUsageKeyEncipherment,
 		ExtKeyUsage: []x509.ExtKeyUsage{
 			x509.ExtKeyUsageClientAuth, x509.ExtKeyUsageServerAuth,
 		},
-		DNSNames: append(extraNames, identity.NodeID(pubkey)),
+		DNSNames: append(extraNames, nodeID),
 	}
 }
 
@@ -451,10 +449,10 @@
 		extraNames = []string{external}
 	}
 	memberTemplate := pki.Certificate{
-		Name:      identity.NodeID(s.config.nodePublicKey()),
+		Name:      s.config.NodeID,
 		Namespace: &pkiNamespace,
 		Issuer:    s.ca,
-		Template:  pkiPeerCertificate(s.config.nodePublicKey(), extraNames),
+		Template:  pkiPeerCertificate(s.config.NodeID, extraNames),
 		Mode:      pki.CertificateExternal,
 		PublicKey: s.config.nodePublicKey(),
 	}
diff --git a/metropolis/node/core/consensus/consensus_test.go b/metropolis/node/core/consensus/consensus_test.go
index 85df62e..64dd0b3 100644
--- a/metropolis/node/core/consensus/consensus_test.go
+++ b/metropolis/node/core/consensus/consensus_test.go
@@ -84,6 +84,7 @@
 	etcd := New(Config{
 		Data:           &b.root.Data.Etcd,
 		Ephemeral:      &b.root.Ephemeral.Consensus,
+		NodeID:         "node1",
 		NodePrivateKey: b.privkey,
 		testOverrides: testOverrides{
 			externalPort:    2345,
@@ -132,6 +133,7 @@
 	etcd := New(Config{
 		Data:           &b.root.Data.Etcd,
 		Ephemeral:      &b.root.Ephemeral.Consensus,
+		NodeID:         "node1",
 		NodePrivateKey: b.privkey,
 		testOverrides: testOverrides{
 			externalPort: 1234,
@@ -168,6 +170,7 @@
 	etcd := New(Config{
 		Data:           &b.root.Data.Etcd,
 		Ephemeral:      &b.root.Ephemeral.Consensus,
+		NodeID:         "node1",
 		NodePrivateKey: b.privkey,
 		testOverrides: testOverrides{
 			externalPort: 1235,
@@ -216,6 +219,7 @@
 	etcd = New(Config{
 		Data:           &b.root.Data.Etcd,
 		Ephemeral:      &b.root.Ephemeral.Consensus,
+		NodeID:         "node1",
 		NodePrivateKey: b.privkey,
 		testOverrides: testOverrides{
 			externalPort: 1235,
@@ -262,6 +266,7 @@
 	etcd := New(Config{
 		Data:           &b.root.Data.Etcd,
 		Ephemeral:      &b.root.Ephemeral.Consensus,
+		NodeID:         "node1",
 		NodePrivateKey: b.privkey,
 		testOverrides: testOverrides{
 			externalPort:    3000,
@@ -290,7 +295,7 @@
 	b2 := prep(t)
 	defer b2.close()
 
-	join, err := st.AddNode(b.ctx, b2.privkey.Public().(ed25519.PublicKey), &AddNodeOption{
+	join, err := st.AddNode(b.ctx, "node2", b2.privkey.Public().(ed25519.PublicKey), &AddNodeOption{
 		externalAddress: "localhost",
 		externalPort:    3001,
 	})
@@ -301,6 +306,7 @@
 	etcd2 := New(Config{
 		Data:           &b2.root.Data.Etcd,
 		Ephemeral:      &b2.root.Ephemeral.Consensus,
+		NodeID:         "node2",
 		NodePrivateKey: b2.privkey,
 		JoinCluster:    join,
 		testOverrides: testOverrides{
diff --git a/metropolis/node/core/consensus/status.go b/metropolis/node/core/consensus/status.go
index ee3efbc..40988e5 100644
--- a/metropolis/node/core/consensus/status.go
+++ b/metropolis/node/core/consensus/status.go
@@ -12,7 +12,6 @@
 
 	"source.monogon.dev/metropolis/node"
 	"source.monogon.dev/metropolis/node/core/consensus/client"
-	"source.monogon.dev/metropolis/node/core/identity"
 	"source.monogon.dev/osbase/event"
 	"source.monogon.dev/osbase/pki"
 )
@@ -87,19 +86,18 @@
 	return s.cl
 }
 
-// AddNode creates a new consensus member corresponding to a given Ed25519 node
-// public key if one does not yet exist. The member will at first be marked as a
+// AddNode creates a new consensus member corresponding to a given node ID
+// if one does not yet exist. The member will at first be marked as a
 // Learner, ensuring it does not take part in quorum until it has finished
 // catching up to the state of the etcd store. As it does, the autopromoter will
 // turn it into a 'full' node and it will start taking part in the quorum and be
 // able to perform all etcd operations.
-func (s *Status) AddNode(ctx context.Context, pk ed25519.PublicKey, opts ...*AddNodeOption) (*JoinCluster, error) {
+func (s *Status) AddNode(ctx context.Context, nodeID string, pk ed25519.PublicKey, opts ...*AddNodeOption) (*JoinCluster, error) {
 	clPKI, err := s.pkiClient()
 	if err != nil {
 		return nil, err
 	}
 
-	nodeID := identity.NodeID(pk)
 	var extraNames []string
 	name := nodeID
 	port := int(node.ConsensusPort)
@@ -117,7 +115,7 @@
 		Name:      nodeID,
 		Namespace: &pkiNamespace,
 		Issuer:    s.ca,
-		Template:  pkiPeerCertificate(pk, extraNames),
+		Template:  pkiPeerCertificate(nodeID, extraNames),
 		Mode:      pki.CertificateExternal,
 		PublicKey: pk,
 	}
diff --git a/metropolis/node/core/curator/bootstrap.go b/metropolis/node/core/curator/bootstrap.go
index e092c63..bdc7f28 100644
--- a/metropolis/node/core/curator/bootstrap.go
+++ b/metropolis/node/core/curator/bootstrap.go
@@ -52,7 +52,7 @@
 	nodeCert := &pki.Certificate{
 		Namespace: &pkiNamespace,
 		Issuer:    pkiCA,
-		Template:  identity.NodeCertificate(node.pubkey),
+		Template:  identity.NodeCertificate(node.ID()),
 		Mode:      pki.CertificateExternal,
 		PublicKey: node.pubkey,
 		Name:      fmt.Sprintf("node-%s", node.ID()),
diff --git a/metropolis/node/core/curator/impl_leader_background.go b/metropolis/node/core/curator/impl_leader_background.go
index 46f78ec..1b07607 100644
--- a/metropolis/node/core/curator/impl_leader_background.go
+++ b/metropolis/node/core/curator/impl_leader_background.go
@@ -133,7 +133,7 @@
 			supervisor.Logger(ctx).Infof("Adding ConsensusMember role to node which is etcd member: %s...", nodeID)
 			// The node is already etcd member. We only call AddNode to obtain the
 			// join parameters.
-			join, err := l.consensusStatus.AddNode(ctx, node.pubkey)
+			join, err := l.consensusStatus.AddNode(ctx, nodeID, node.pubkey)
 			if err != nil {
 				return fmt.Errorf("failed to obtain consensus join parameters: %w", err)
 			}
diff --git a/metropolis/node/core/curator/impl_leader_certificates.go b/metropolis/node/core/curator/impl_leader_certificates.go
index 73e28a9..40211fd 100644
--- a/metropolis/node/core/curator/impl_leader_certificates.go
+++ b/metropolis/node/core/curator/impl_leader_certificates.go
@@ -8,7 +8,6 @@
 	"google.golang.org/grpc/status"
 
 	ipb "source.monogon.dev/metropolis/node/core/curator/proto/api"
-	"source.monogon.dev/metropolis/node/core/identity"
 	"source.monogon.dev/metropolis/node/core/rpc"
 	kpki "source.monogon.dev/metropolis/node/kubernetes/pki"
 )
@@ -82,7 +81,7 @@
 	if pi == nil || pi.Node == nil {
 		return nil, status.Error(codes.PermissionDenied, "only nodes can request certificates")
 	}
-	id := identity.NodeID(pi.Node.PublicKey)
+	id := pi.Node.ID
 	node, err := nodeLoad(ctx, l.leadership, id)
 	if err != nil {
 		return nil, status.Errorf(codes.Unavailable, "could not load node info: %v", err)
diff --git a/metropolis/node/core/curator/impl_leader_cluster_networking.go b/metropolis/node/core/curator/impl_leader_cluster_networking.go
index 5dab657..b2cc8ba 100644
--- a/metropolis/node/core/curator/impl_leader_cluster_networking.go
+++ b/metropolis/node/core/curator/impl_leader_cluster_networking.go
@@ -10,7 +10,6 @@
 	"google.golang.org/grpc/status"
 
 	ipb "source.monogon.dev/metropolis/node/core/curator/proto/api"
-	"source.monogon.dev/metropolis/node/core/identity"
 	"source.monogon.dev/metropolis/node/core/rpc"
 	"source.monogon.dev/osbase/event"
 	"source.monogon.dev/osbase/event/etcd"
@@ -69,7 +68,7 @@
 	if pi == nil || pi.Node == nil {
 		return nil, status.Error(codes.PermissionDenied, "only nodes can update node cluster networking")
 	}
-	id := identity.NodeID(pi.Node.PublicKey)
+	id := pi.Node.ID
 
 	if req.Clusternet == nil {
 		return nil, status.Error(codes.InvalidArgument, "clusternet must be set")
diff --git a/metropolis/node/core/curator/impl_leader_curator.go b/metropolis/node/core/curator/impl_leader_curator.go
index ec18688..d668dc4 100644
--- a/metropolis/node/core/curator/impl_leader_curator.go
+++ b/metropolis/node/core/curator/impl_leader_curator.go
@@ -227,7 +227,7 @@
 	if pi == nil || pi.Node == nil {
 		return nil, status.Error(codes.PermissionDenied, "only nodes can update node status")
 	}
-	id := identity.NodeID(pi.Node.PublicKey)
+	id := pi.Node.ID
 	if id != req.NodeId {
 		return nil, status.Errorf(codes.PermissionDenied, "node %q cannot update the status of node %q", id, req.NodeId)
 	}
@@ -273,7 +273,7 @@
 	if pi == nil || pi.Node == nil {
 		return status.Error(codes.PermissionDenied, "only nodes can send heartbeats")
 	}
-	id := identity.NodeID(pi.Node.PublicKey)
+	id := pi.Node.ID
 
 	for {
 		_, err := stream.Recv()
@@ -395,6 +395,7 @@
 
 	// No node exists, create one.
 	node = &Node{
+		id:       id,
 		pubkey:   pubkey,
 		jkey:     req.JoinKey,
 		state:    cpb.NodeState_NODE_STATE_NEW,
@@ -495,10 +496,10 @@
 	nodeCert := &pki.Certificate{
 		Namespace: &pkiNamespace,
 		Issuer:    pkiCA,
-		Template:  identity.NodeCertificate(node.pubkey),
+		Template:  identity.NodeCertificate(node.ID()),
 		Mode:      pki.CertificateExternal,
 		PublicKey: node.pubkey,
-		Name:      fmt.Sprintf("node-%s", identity.NodeID(pubkey)),
+		Name:      fmt.Sprintf("node-%s", node.ID()),
 	}
 	nodeCertBytes, err := nodeCert.Ensure(ctx, l.etcd)
 	if err != nil {
diff --git a/metropolis/node/core/curator/impl_leader_management.go b/metropolis/node/core/curator/impl_leader_management.go
index 338cc17..a7eaf5f 100644
--- a/metropolis/node/core/curator/impl_leader_management.go
+++ b/metropolis/node/core/curator/impl_leader_management.go
@@ -145,7 +145,7 @@
 // heartbeat was received, given a current timestamp.
 func (l *leaderManagement) nodeHealth(node *Node, now time.Time) (apb.Node_Health, time.Duration) {
 	// Get the last received node heartbeat's timestamp.
-	nid := identity.NodeID(node.pubkey)
+	nid := node.ID()
 	nts := l.nodeHeartbeatTimestamp(nid)
 	// lhb is the duration since the last heartbeat was received.
 	lhb := now.Sub(nts)
@@ -225,7 +225,7 @@
 
 		entry := apb.Node{
 			Pubkey:             node.pubkey,
-			Id:                 identity.NodeID(node.pubkey),
+			Id:                 node.ID(),
 			State:              node.state,
 			Status:             node.status,
 			Roles:              roles,
@@ -343,7 +343,7 @@
 	if req.ConsensusMember != nil {
 		if *req.ConsensusMember {
 			// Add a new etcd learner node.
-			join, err := l.consensusStatus.AddNode(ctx, node.pubkey)
+			join, err := l.consensusStatus.AddNode(ctx, id, node.pubkey)
 			if err != nil {
 				return nil, status.Errorf(codes.Unavailable, "could not add node: %v", err)
 			}
diff --git a/metropolis/node/core/curator/impl_leader_test.go b/metropolis/node/core/curator/impl_leader_test.go
index a6ad457..bbdf936 100644
--- a/metropolis/node/core/curator/impl_leader_test.go
+++ b/metropolis/node/core/curator/impl_leader_test.go
@@ -113,6 +113,7 @@
 	nodeID := identity.NodeID(nodePub)
 	cNode := NewNodeForBootstrap(&NewNodeData{
 		CUK:      nil,
+		ID:       nodeID,
 		Pubkey:   nodePub,
 		JPub:     nodeJoinPub,
 		TPMUsage: cpb.NodeTPMUsage_NODE_TPM_PRESENT_AND_USED,
@@ -357,6 +358,7 @@
 	cuk := []byte("fakefakefakefakefakefakefakefake")
 	node := &Node{
 		clusterUnlockKey: cuk,
+		id:               identity.NodeID(npub),
 		pubkey:           npub,
 		jkey:             jpub,
 	}
@@ -768,7 +770,7 @@
 			if err != nil {
 				t.Fatalf("Recv failed: %v", err)
 			}
-			if identity.NodeID(node.Pubkey) != cl.otherNodeID {
+			if node.Id != cl.otherNodeID {
 				continue
 			}
 			if node.State != state {
@@ -833,6 +835,7 @@
 	cuk := []byte("fakefakefakefakefakefakefakefake")
 	node := Node{
 		clusterUnlockKey: cuk,
+		id:               identity.NodeID(npub),
 		pubkey:           npub,
 		jkey:             jpub,
 		state:            cpb.NodeState_NODE_STATE_UP,
@@ -965,7 +968,7 @@
 			if err != nil {
 				t.Fatalf("Recv failed: %v", err)
 			}
-			if id != identity.NodeID(node.Pubkey) {
+			if id != node.Id {
 				continue
 			}
 			if node.Health != health {
@@ -1027,8 +1030,10 @@
 		t.Fatalf("could not generate join keypair: %v", err)
 	}
 	cuk := []byte("fakefakefakefakefakefakefakefake")
+	nodeID := identity.NodeID(npub)
 	node := Node{
 		clusterUnlockKey: cuk,
+		id:               nodeID,
 		pubkey:           npub,
 		jkey:             jpub,
 		state:            cpb.NodeState_NODE_STATE_NEW,
@@ -1036,7 +1041,7 @@
 	if err := nodeSave(ctx, cl.l, &node); err != nil {
 		t.Fatalf("nodeSave failed: %v", err)
 	}
-	expectNode(identity.NodeID(npub), apb.Node_UNKNOWN)
+	expectNode(nodeID, apb.Node_UNKNOWN)
 }
 
 // TestManagementClusterInfo exercises GetClusterInfo after setting a status.
@@ -1159,9 +1164,8 @@
 	// Exercise duration-based filtering. Start with setting up node and
 	// leadership timestamps much like in TestClusterHeartbeat.
 	tsn := putNode(t, ctx, cl.l, func(n *Node) { n.state = cpb.NodeState_NODE_STATE_UP })
-	nid := identity.NodeID(tsn.pubkey)
 	// Last of node's tsn heartbeats were received 5 seconds ago,
-	cl.l.ls.heartbeatTimestamps.Store(nid, time.Now().Add(-5*time.Second))
+	cl.l.ls.heartbeatTimestamps.Store(tsn.id, time.Now().Add(-5*time.Second))
 	// ...while the current leader's tenure started 15 seconds ago.
 	cl.l.ls.startTs = time.Now().Add(-15 * time.Second)
 
@@ -1989,7 +1993,7 @@
 	// Add a cluster node with ConsensusMember role, and an etcd member with a
 	// different name.
 	newNode := putNode(t, ctx, cl.l, func(n *Node) {
-		join, err := cl.l.consensusStatus.AddNode(ctx, n.pubkey)
+		join, err := cl.l.consensusStatus.AddNode(ctx, "foo", n.pubkey)
 		if err != nil {
 			t.Fatalf("failed to obtain consensus join parameters: %v", err)
 		}
diff --git a/metropolis/node/core/curator/state_node.go b/metropolis/node/core/curator/state_node.go
index 0cfc87e..e574f9d 100644
--- a/metropolis/node/core/curator/state_node.go
+++ b/metropolis/node/core/curator/state_node.go
@@ -60,6 +60,9 @@
 	// node's ESP partition.
 	clusterUnlockKey []byte
 
+	// id is the Node's ID.
+	id string
+
 	// pubkey is the ED25519 public key corresponding to the node's private key
 	// which it stores on its local data partition. The private part of the key
 	// never leaves the node.
@@ -108,6 +111,7 @@
 
 type NewNodeData struct {
 	CUK      []byte
+	ID       string
 	Pubkey   []byte
 	JPub     []byte
 	TPMUsage cpb.NodeTPMUsage
@@ -121,6 +125,7 @@
 func NewNodeForBootstrap(n *NewNodeData) Node {
 	return Node{
 		clusterUnlockKey: n.CUK,
+		id:               n.ID,
 		pubkey:           n.Pubkey,
 		jkey:             n.JPub,
 		state:            cpb.NodeState_NODE_STATE_UP,
@@ -170,13 +175,13 @@
 	URL string
 }
 
-// ID returns the name of this node. See NodeID for more information.
+// ID returns the name of this node.
 func (n *Node) ID() string {
-	return identity.NodeID(n.pubkey)
+	return n.id
 }
 
 func (n *Node) String() string {
-	return n.ID()
+	return n.id
 }
 
 // KubernetesWorker returns a copy of the NodeRoleKubernetesWorker struct if
@@ -315,6 +320,7 @@
 	}
 	n := &Node{
 		clusterUnlockKey: msg.ClusterUnlockKey,
+		id:               identity.NodeID(msg.PublicKey),
 		pubkey:           msg.PublicKey,
 		jkey:             msg.JoinKey,
 		state:            msg.FsmState,
diff --git a/metropolis/node/core/identity/certificates.go b/metropolis/node/core/identity/certificates.go
index fca55b7..7735ae6 100644
--- a/metropolis/node/core/identity/certificates.go
+++ b/metropolis/node/core/identity/certificates.go
@@ -22,10 +22,10 @@
 }
 
 // NodeCertificate makes a Metropolis-compatible node certificate template.
-func NodeCertificate(pubkey ed25519.PublicKey) x509.Certificate {
+func NodeCertificate(nodeID string) x509.Certificate {
 	return x509.Certificate{
 		Subject: pkix.Name{
-			CommonName: NodeID(pubkey),
+			CommonName: nodeID,
 		},
 		KeyUsage: x509.KeyUsageDigitalSignature | x509.KeyUsageKeyEncipherment,
 		ExtKeyUsage: []x509.ExtKeyUsage{
@@ -39,7 +39,7 @@
 		// certificate for ease of use within Metropolis, where the local DNS setup
 		// allows each node's IP address to be resolvable through the Node's ID.
 		DNSNames: []string{
-			NodeID(pubkey),
+			nodeID,
 		},
 	}
 }
@@ -123,12 +123,12 @@
 // VerifyNodeInCluster ensures that a given certificate is a Metropolis node
 // certificate emitted by a given Metropolis CA.
 //
-// The node's public key is returned if verification is successful, and error is
+// The node's ID is returned if verification is successful, and error is
 // returned otherwise.
-func VerifyNodeInCluster(node, ca *x509.Certificate) (ed25519.PublicKey, error) {
+func VerifyNodeInCluster(node, ca *x509.Certificate) (string, error) {
 	pk, err := VerifyInCluster(node, ca)
 	if err != nil {
-		return nil, err
+		return "", err
 	}
 
 	// Ensure certificate has ServerAuth bit, thereby marking it as a node certificate.
@@ -140,14 +140,14 @@
 		}
 	}
 	if !found {
-		return nil, fmt.Errorf("not a node certificate (missing ServerAuth key usage)")
+		return "", fmt.Errorf("not a node certificate (missing ServerAuth key usage)")
 	}
 
 	id := NodeID(pk)
 
 	// Ensure node ID is present in Subject.CommonName and at least one DNS name.
 	if node.Subject.CommonName != id {
-		return nil, fmt.Errorf("node ID not found in CommonName")
+		return "", fmt.Errorf("node ID not found in CommonName")
 	}
 
 	found = false
@@ -158,10 +158,10 @@
 		}
 	}
 	if !found {
-		return nil, fmt.Errorf("node ID not found in DNSNames")
+		return "", fmt.Errorf("node ID not found in DNSNames")
 	}
 
-	return pk, nil
+	return id, nil
 }
 
 // VerifyUserInCluster ensures that a given certificate is a Metropolis user
diff --git a/metropolis/node/core/identity/certificates_test.go b/metropolis/node/core/identity/certificates_test.go
index f96f517..d2dd0cd 100644
--- a/metropolis/node/core/identity/certificates_test.go
+++ b/metropolis/node/core/identity/certificates_test.go
@@ -59,7 +59,7 @@
 		t.Fatalf("ParseCertificate (CA): %v", err)
 	}
 
-	nodeTemplate := NodeCertificate(nodePub)
+	nodeTemplate := NodeCertificate(NodeID(nodePub))
 	basic(&nodeTemplate)
 	fnode(&nodeTemplate)
 	nodeCertBytes, err = x509.CreateCertificate(rand.Reader, &nodeTemplate, caCert, nodePub, caPriv)
diff --git a/metropolis/node/core/roleserve/roleserve.go b/metropolis/node/core/roleserve/roleserve.go
index 3bcc48d..e5e0d74 100644
--- a/metropolis/node/core/roleserve/roleserve.go
+++ b/metropolis/node/core/roleserve/roleserve.go
@@ -183,6 +183,7 @@
 type BootstrapData struct {
 	// Data about the bootstrapping node.
 	Node struct {
+		ID         string
 		PrivateKey ed25519.PrivateKey
 
 		// CUK/NUK for storage, if storage encryption is enabled.
@@ -209,12 +210,9 @@
 }
 
 func (s *Service) ProvideBootstrapData(data *BootstrapData) {
-	pubkey := data.Node.PrivateKey.Public().(ed25519.PublicKey)
-	nid := identity.NodeID(pubkey)
-
 	// This is the first time we have the node ID, tell the resolver that it's
 	// available on the loopback interface.
-	s.Resolver.AddOverride(nid, resolver.NodeByHostPort("127.0.0.1", uint16(common.CuratorServicePort)))
+	s.Resolver.AddOverride(data.Node.ID, resolver.NodeByHostPort("127.0.0.1", uint16(common.CuratorServicePort)))
 	s.Resolver.AddEndpoint(resolver.NodeByHostPort("127.0.0.1", uint16(common.CuratorServicePort)))
 
 	s.bootstrapData.Set(data)
diff --git a/metropolis/node/core/roleserve/values.go b/metropolis/node/core/roleserve/values.go
index 34c743b..aa0c227 100644
--- a/metropolis/node/core/roleserve/values.go
+++ b/metropolis/node/core/roleserve/values.go
@@ -63,7 +63,7 @@
 }
 
 func (c *CuratorConnection) nodeID() string {
-	return identity.NodeID(c.Credentials.PublicKey())
+	return c.Credentials.ID()
 }
 
 // KubernetesStatus is an Event Value structure populated by a running
diff --git a/metropolis/node/core/roleserve/worker_controlplane.go b/metropolis/node/core/roleserve/worker_controlplane.go
index 3ba4293..8b4657a 100644
--- a/metropolis/node/core/roleserve/worker_controlplane.go
+++ b/metropolis/node/core/roleserve/worker_controlplane.go
@@ -145,6 +145,7 @@
 						consensusConfig: &consensus.Config{
 							Data:           &s.storageRoot.Data.Etcd,
 							Ephemeral:      &s.storageRoot.Ephemeral.Consensus,
+							NodeID:         bd.Node.ID,
 							NodePrivateKey: bd.Node.PrivateKey,
 						},
 						bootstrap: bd,
@@ -197,6 +198,7 @@
 						consensusConfig: &consensus.Config{
 							Data:           &s.storageRoot.Data.Etcd,
 							Ephemeral:      &s.storageRoot.Ephemeral.Consensus,
+							NodeID:         cc.nodeID(),
 							NodePrivateKey: cc.Credentials.TLSCredentials().PrivateKey.(ed25519.PrivateKey),
 							JoinCluster: &consensus.JoinCluster{
 								CACertificate:   caCert,
@@ -274,6 +276,7 @@
 
 				n := curator.NewNodeForBootstrap(&curator.NewNodeData{
 					CUK:      b.Node.ClusterUnlockKey,
+					ID:       b.Node.ID,
 					Pubkey:   npub,
 					JPub:     jpub,
 					TPMUsage: b.Node.TPMUsage,
@@ -281,7 +284,7 @@
 				})
 
 				// The first node always runs consensus.
-				join, err := st.AddNode(ctx, npub)
+				join, err := st.AddNode(ctx, b.Node.ID, npub)
 				if err != nil {
 					return fmt.Errorf("when retrieving node join data from consensus: %w", err)
 				}
diff --git a/metropolis/node/core/rpc/client.go b/metropolis/node/core/rpc/client.go
index 5fc76e3..72122b7 100644
--- a/metropolis/node/core/rpc/client.go
+++ b/metropolis/node/core/rpc/client.go
@@ -39,15 +39,12 @@
 		if err != nil {
 			return fmt.Errorf("server presented unparseable certificate: %w", err)
 		}
-		pkey, err := identity.VerifyNodeInCluster(serverCert, ca)
+		id, err := identity.VerifyNodeInCluster(serverCert, ca)
 		if err != nil {
 			return fmt.Errorf("node certificate verification failed: %w", err)
 		}
-		if nodeID != "" {
-			id := identity.NodeID(pkey)
-			if id != nodeID {
-				return fmt.Errorf("wanted to reach node %q, got %q", nodeID, id)
-			}
+		if nodeID != "" && id != nodeID {
+			return fmt.Errorf("wanted to reach node %q, got %q", nodeID, id)
 		}
 
 		return nil
diff --git a/metropolis/node/core/rpc/peerinfo.go b/metropolis/node/core/rpc/peerinfo.go
index 6a8443b..55f949c 100644
--- a/metropolis/node/core/rpc/peerinfo.go
+++ b/metropolis/node/core/rpc/peerinfo.go
@@ -11,7 +11,6 @@
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
 
-	"source.monogon.dev/metropolis/node/core/identity"
 	epb "source.monogon.dev/metropolis/proto/ext"
 )
 
@@ -51,8 +50,8 @@
 // PeerInfoNode contains information about a Node on the other side of a gRPC
 // connection.
 type PeerInfoNode struct {
-	// PublicKey is the ED25519 public key bytes of the node.
-	PublicKey []byte
+	// ID is the node identifier.
+	ID string
 
 	// Permissions are the set of permissions this node has.
 	Permissions Permissions
@@ -121,7 +120,7 @@
 	}
 	switch {
 	case p.Node != nil:
-		return fmt.Sprintf("node: %s, %s", identity.NodeID(p.Node.PublicKey), p.Node.Permissions)
+		return fmt.Sprintf("node: %s, %s", p.Node.ID, p.Node.Permissions)
 	case p.User != nil:
 		return fmt.Sprintf("user: %s", p.User.Identity)
 	case p.Unauthenticated != nil:
diff --git a/metropolis/node/core/rpc/server_authentication.go b/metropolis/node/core/rpc/server_authentication.go
index eed7dba..37c8fad 100644
--- a/metropolis/node/core/rpc/server_authentication.go
+++ b/metropolis/node/core/rpc/server_authentication.go
@@ -161,7 +161,7 @@
 		return nil, status.Errorf(codes.Unauthenticated, "certificate not signed by cluster CA: %v", err)
 	}
 
-	nodepk, errNode := identity.VerifyNodeInCluster(cert, s.NodeCredentials.ClusterCA())
+	id, errNode := identity.VerifyNodeInCluster(cert, s.NodeCredentials.ClusterCA())
 	if errNode == nil {
 		// This is a Metropolis node.
 		np := s.nodePermissions
@@ -170,7 +170,7 @@
 		}
 		return &PeerInfo{
 			Node: &PeerInfoNode{
-				PublicKey:   nodepk,
+				ID:          id,
 				Permissions: np,
 			},
 		}, nil
diff --git a/metropolis/test/launch/BUILD.bazel b/metropolis/test/launch/BUILD.bazel
index 7c6c6d0..50f0ede 100644
--- a/metropolis/test/launch/BUILD.bazel
+++ b/metropolis/test/launch/BUILD.bazel
@@ -44,7 +44,6 @@
         "//metropolis/cli/metroctl/core",
         "//metropolis/node",
         "//metropolis/node/core/curator/proto/api",
-        "//metropolis/node/core/identity",
         "//metropolis/node/core/rpc",
         "//metropolis/node/core/rpc/resolver",
         "//metropolis/proto/api",
diff --git a/metropolis/test/launch/cluster.go b/metropolis/test/launch/cluster.go
index 8be6736..ce9d246 100644
--- a/metropolis/test/launch/cluster.go
+++ b/metropolis/test/launch/cluster.go
@@ -45,7 +45,6 @@
 	"source.monogon.dev/go/qcow2"
 	metroctl "source.monogon.dev/metropolis/cli/metroctl/core"
 	"source.monogon.dev/metropolis/node"
-	"source.monogon.dev/metropolis/node/core/identity"
 	"source.monogon.dev/metropolis/node/core/rpc"
 	"source.monogon.dev/metropolis/node/core/rpc/resolver"
 	"source.monogon.dev/metropolis/test/localregistry"
@@ -525,11 +524,9 @@
 		return nil, fmt.Errorf("could not get nodes: %w", err)
 	}
 	for _, n := range nodes {
-		eid := identity.NodeID(n.Pubkey)
-		if eid != id {
-			continue
+		if n.Id == id {
+			return n, nil
 		}
-		return n, nil
 	}
 	return nil, fmt.Errorf("no such node")
 }
@@ -725,7 +722,7 @@
 			return fmt.Errorf("node has no status and/or address")
 		}
 		node = &NodeInCluster{
-			ID:                identity.NodeID(n.Pubkey),
+			ID:                n.Id,
 			ManagementAddress: n.Status.ExternalAddress,
 		}
 		return nil
diff --git a/metropolis/test/util/rpc.go b/metropolis/test/util/rpc.go
index 030d8d0..c31c935 100644
--- a/metropolis/test/util/rpc.go
+++ b/metropolis/test/util/rpc.go
@@ -66,7 +66,7 @@
 		nodeCert := pki.Certificate{
 			Namespace: &ns,
 			Issuer:    &caCert,
-			Template:  identity.NodeCertificate(npk),
+			Template:  identity.NodeCertificate(identity.NodeID(npk)),
 			Mode:      pki.CertificateEphemeral,
 			PublicKey: npk,
 			Name:      "",
