如果集群 CA 密钥或管理器节点被泄露,您可以轮换 swarm 根 CA,这样所有节点都不再信任由旧根 CA 签名的证书。
运行docker swarm ca --rotate以生成新的 CA 证书和密钥。如果您愿意,您可以传递--ca-cert和--external-ca标志来指定根证书并使用集群外部的根 CA。或者,您可以传递--ca-cert和--ca-key标志来指定您希望 swarm 使用的确切证书和密钥。
当您发出docker swarm ca --rotate命令时,以下事情会依次发生:
1.Docker 生成一个交叉签名的证书。这意味着新的根 CA 证书的一个版本是用旧的根 CA 证书签名的。此交叉签名证书用作所有新节点证书的中间证书。这确保了仍然信任旧根 CA 的节点仍然可以验证由新 CA 签署的证书。
2.Docker 还告诉所有节点立即更新它们的 TLS 证书。此过程可能需要几分钟,具体取决于 swarm 中的节点数量。
3.在 swarm 中的每个节点都有新 CA 签署的新 TLS 证书后,Docker 会忘记旧的 CA 证书和密钥材料,并告诉所有节点只信任新的 CA 证书。
这也会导致群的加入令牌发生变化。以前的加入令牌不再有效。
从现在开始,所有新颁发的节点证书都使用新的根 CA 签名,并且不包含任何中间证书。