本数据库允许您轮换安全证书而无需重新启动节点
在以下情况下,您可能需要轮换节点,客户端或CA证书:
hubble cert create-client <username>
--certs-dir=certs \
--ca-key=mysafedirectory/ca.key
使用您的首选方法将新的客户端证书和密钥上载到客户端。
让客户端使用新的客户端证书。
此步骤是特定于应用程序的,可能需要重新启动客户端。
要轮换节点证书,请创建新的节点证书并密钥,然后将其重新加载到节点上。
hubble cert create-node \
<node hostname> \
<node other hostname> \
<node yet another hostname> \
--certs-dir=certs \
--ca-key=mysafedirectory/ca.key \
--overwrite
由于必须在与现有证书和密钥相同的目录中创建新的证书和密钥,因此请使用--overwrite
标志覆盖现有文件。另外,请确保指定可以到达该节点的所有地址。
scp certs/node.crt \
certs/node.key \
<username>@<node address>:~/certs
hubble
进程发出SIGHUP
信号来重新加载节点证书,而无需重新启动节点: pkill -SIGHUP -x hubble
SIGHUP
信号必须由运行该进程的同一用户发送(例如,如果hubble
进程在root用户下运行,则使用sudo运行)。
https://<address of node with new certs>:8080/#/reports/certificates/local
滚动到节点证书详细信息,并确认“有效期至”字段显示新证书的到期时间。
要轮换CA证书,您需要创建一个新的CA密钥以及一个包含新CA证书和旧CA证书的组合CA证书,然后在节点和客户端上重新加载新的CA证书。一旦所有节点和客户端都具有合并的CA证书,就可以创建使用新CA证书签名的新节点和客户端证书,并将这些证书重新加载到节点和客户端上。
Tip : 为什么Hubble创建组合的CA证书
轮换CA证书时,重新扫描certs目录后,节点将具有新的CA证书,而客户端在重新启动时将具有新的CA证书。但是,在轮换节点证书和客户端证书之前,仍然使用旧的CA证书对节点和客户端证书进行签名。因此,节点和客户端无法使用新的CA证书来验证彼此的身份。
为了解决此问题,我们利用了多个CA证书可以同时处于活动状态这一事实。在验证另一个节点或客户端的身份时,他们可以检查上载到它们的多个CA证书。因此,Hubble可以创建一个组合的CA证书,其中包含新的CA证书,后跟旧的CA证书,而不仅仅是在轮换CA证书时仅创建新证书。轮换节点证书和客户端证书时,将使用组合的CA证书来验证旧的以及新的节点证书和客户端证书。
Tip : 为什么要提前轮换CA证书?
在轮换CA证书后轮换节点和客户端证书时,将使用新的CA证书对节点和客户端证书进行签名。重新扫描节点上的certs目录后,节点将使用新节点和CA证书。但是,客户端仅在重新启动客户端后才使用新的CA和客户端证书。因此,尚不具有新CA证书的客户端将不接受由新CA证书签名的节点证书。为确保所有节点和客户端都拥有最新的CA证书,请以完全不同的时间表轮换CA证书;理想情况下,是在更改节点和客户端证书之前的几个月。
mv mysafedirectory/ca.key mysafedirectory/ca.old.key
--overwrite
标志覆盖旧的CA证书,创建一个新的CA证书和密钥: hubble cert create-ca \
--certs-dir=certs \
--ca-key=mysafedirectory/ca.key \
--overwrite
警告: CA密钥永远不会由hubble命令自动加载,因此应在一个单独的目录中创建该目录,该目录由--ca-key标志标识。
scp certs/ca.crt <username>@<node1 address>:~/certs
使用您的首选方法将新的CA证书上载到每个客户端。
在每个节点上,通过向Hubble进程发出SIGHUP
信号来重新加载CA证书,而无需重新启动该节点:
pkill -SIGHUP -x hubble
SIGHUP
信号必须由运行该进程的同一用户发送(例如,如果Hubble进程在root用户下运行,则使用sudo运行)。
在每个客户端上重新加载CA证书。 此步骤是特定于应用程序的,可能需要重新启动客户端。
使用管理界面中的“本地节点证书”页面来验证证书轮换是否成功:
https://<address of node with new certs>:8080/#/reports/certificates/local
应显示旧的和新的CA证书的详细信息。确认新CA证书的有效期至字段显示新证书的到期时间。