使用自定义 GPG 密钥对重新初始化密钥存储库
ENTERPRISE
使用自定义 GPG 密钥对重新初始化密钥存储库
您可以使用自定义 GPG 密钥对重新初始化密钥存储库。执行此操作步骤包括:
先决条件:
- DC/OS CLI 已安装
- 通过
dcos auth login
作为超级用户登录到 DC/OS CLI - 已安装了 GNU Privacy Guard (GPG)
- 如果您的 安全模式 是
permissive
或strict
,则必须遵守 下载根证书 中的步骤才能发布此部分的curl
命令。 - 如果您的 安全模式 是
disabled
,在必须从命令中删除--cacert dcos-ca.crt
才能发布。
编辑 SECRETS_BOOTSTRAP 值
在您选择的编辑器中打开
dcos-secrets.env
文件。sudo vi /opt/mesosphere/etc/dcos-secrets.env
编辑
SECRETS_BOOTSTRAP=true
值以读取false
,如下所示。SECRETS_BOOTSTRAP=false
保存文件并退出编辑器。
停止存储库和保管库服务
停止密钥存储库和保管库服务。
sudo systemctl stop dcos-secrets dcos-vault
使用以下命令确认
dcos-secrets
服务已关闭。systemctl status dcos-secrets
键入
q
以退出。使用以下命令确认
dcos-vault
服务已关闭。systemctl status dcos-vault
键入
q
以退出。如果您的集群有多个管理节点,在继续之前对每个管理节点重复步骤 1 到 5。
停止 ZooKeeper CLI
启动 ZooKeeper 命令行界面。
/opt/mesosphere/packages/exhibitor--*/usr/zookeeper/bin/zkCli.sh
执行以下 ZooKeeper 命令以获得额外权限,必要时使用 ZooKeeper 超级用户的实际用户名和密码替换
super:secret
。注意:
默认情况下,DC/OS 将 ZooKeeper 超级用户设置为 super:secret,但我们建议更改默认值。
addauth digest super:secret
删除
/dcos/vault/default
和rmr /dcos/secrets
目录,如下所示。rmr /dcos/vault/default
rmr /dcos/secrets
使用以下命令确认目录已删除。
ls /dcos/vault
ls /dcos
键入
quit
以退出 ZooKeeper 命令行界面。
启动存储库和保管库服务
启动密钥存储库和保管库服务。
sudo systemctl start dcos-secrets dcos-vault
使用以下命令确认
dcos-secrets
服务已启动。systemctl status dcos-secrets
键入
q
以退出。使用以下命令确认
dcos-vault
服务已启动。systemctl status dcos-vault
键入
q
以退出。如果您的集群有多个管理节点,在继续之前对每个管理节点重复步骤 1 到 5。
创建新密钥对
您不必使用 GPG 来生成密钥对。为方便起见,我们提供了这些说明。唯一要求是密钥对可以加载到 GPG 中。如果您选择使用其他工具,只需稍后将密钥导入 GPG 并跳转至步骤 4。
在管理节点的安全 shell 内,使用以下命令启动新的 GPG 公私密钥对的创建。
gpg --gen-key
在第一个提示符下,键入
1
以选择RSA and RSA
选项。根据需要完成其余提示符部分。
使用以下命令导出公钥,对其进行 base64 编码并删除换行符。在执行命令之前,将下面的 替换为公钥的字母数字 ID。
注意: 在以下行 gpg: key CCE6A37D marked as ultimately trusted 中, CCE6A37D 表示公钥的 ID。
gpg --export <key-ID> | base64 -w 0 | tr '\n' ' '
复制 GPG 返回的值。这是 base64 编码格式的公共 GPG 密钥。
在您的终端提示符中打开新选项卡。
使用公钥初始化存储库
使用以下
curl
命令凭借新的 GPG 公钥初始化密钥存储库。将"pgp_keys"
值替换为上一步中 GPG 返回的值。curl -X PUT --cacert dcos-ca.crt -H "Authorization: token=$(dcos config show core.dcos_acs_token)" -d '{"shares":1,"threshold":1,"pgp_keys":["mQIN...xQPE="]}' $(dcos config show core.dcos_url)/secrets/v1/init/default -H 'Content-Type: application/json'
密钥存储库服务返回用使用公钥加密的开封密钥,表示成功了。
{"keys":["c1c14c03483...c400"],"pgp_fingerprints":["1ff31b0af...d57b464df4"],"root_token":"da8e3b55-8719-4594-5378-4a9f3498387f"}
祝贺您!您已成功重新初始化密钥存储库。要拆封它,请参阅使用自定义钥匙拆封密封的密钥存储库。