使用自定义 GPG 密钥对重新初始化密钥存储库

ENTERPRISE

使用自定义 GPG 密钥对重新初始化密钥存储库

您可以使用自定义 GPG 密钥对重新初始化密钥存储库。执行此操作步骤包括:

  1. 编辑 您的 SECRETS_BOOTSTRAP 值
  2. 停止 存储库和保管库服务
  3. 停止 ZooKeeper CLI
  4. 重启 存储库和保管库服务
  5. 创建 新密钥对
  6. 使用新密钥初始化 存储库

先决条件:

编辑 SECRETS_BOOTSTRAP 值

  1. 通过 SSH 进入主节点

  2. 在您选择的编辑器中打开 dcos-secrets.env 文件。

    sudo vi /opt/mesosphere/etc/dcos-secrets.env
    
  3. 编辑 SECRETS_BOOTSTRAP=true 值以读取 false,如下所示。

    SECRETS_BOOTSTRAP=false
    
  4. 保存文件并退出编辑器。

停止存储库和保管库服务

  1. 停止密钥存储库和保管库服务。

    sudo systemctl stop dcos-secrets dcos-vault
    
  2. 使用以下命令确认 dcos-secrets 服务已关闭。

    systemctl status dcos-secrets
    
  3. 键入 q 以退出。

  4. 使用以下命令确认 dcos-vault 服务已关闭。

    systemctl status dcos-vault
    
  5. 键入 q 以退出。

  6. 如果您的集群有多个管理节点,在继续之前对每个管理节点重复步骤 1 到 5。

停止 ZooKeeper CLI

  1. 启动 ZooKeeper 命令行界面。

    /opt/mesosphere/packages/exhibitor--*/usr/zookeeper/bin/zkCli.sh
    
  2. 执行以下 ZooKeeper 命令以获得额外权限,必要时使用 ZooKeeper 超级用户的实际用户名和密码替换 super:secret

    注意:

默认情况下,DC/OS 将 ZooKeeper 超级用户设置为 super:secret,但我们建议更改默认值

addauth digest super:secret
  1. 删除 /dcos/vault/defaultrmr /dcos/secrets 目录,如下所示。

    rmr /dcos/vault/default
    rmr /dcos/secrets
    
  2. 使用以下命令确认目录已删除。

    ls /dcos/vault
    ls /dcos
    
  3. 键入 quit 以退出 ZooKeeper 命令行界面。

启动存储库和保管库服务

  1. 启动密钥存储库和保管库服务。

    sudo systemctl start dcos-secrets dcos-vault
    
  2. 使用以下命令确认 dcos-secrets 服务已启动。

    systemctl status dcos-secrets
    
  3. 键入 q 以退出。

  4. 使用以下命令确认 dcos-vault 服务已启动。

    systemctl status dcos-vault
    
  5. 键入 q 以退出。

  6. 如果您的集群有多个管理节点,在继续之前对每个管理节点重复步骤 1 到 5。

创建新密钥对

不必使用 GPG 来生成密钥对。为方便起见,我们提供了这些说明。唯一要求是密钥对可以加载到 GPG 中。如果您选择使用其他工具,只需稍后将密钥导入 GPG 并跳转至步骤 4。

  1. 在管理节点的安全 shell 内,使用以下命令启动新的 GPG 公私密钥对的创建。

    gpg --gen-key
    
  2. 在第一个提示符下,键入1 以选择 RSA and RSA 选项。

  3. 根据需要完成其余提示符部分。

  4. 使用以下命令导出公钥,对其进行 base64 编码并删除换行符。在执行命令之前,将下面的 替换为公钥的字母数字 ID。

注意: 在以下行 gpg: key CCE6A37D marked as ultimately trusted 中, CCE6A37D 表示公钥的 ID。

gpg --export <key-ID> | base64 -w 0 | tr '\n' ' '
  1. 复制 GPG 返回的值。这是 base64 编码格式的公共 GPG 密钥。

  2. 在您的终端提示符中打开新选项卡。

使用公钥初始化存储库

  1. 使用以下 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'
    
  2. 密钥存储库服务返回用使用公钥加密的开封密钥,表示成功了。

    {"keys":["c1c14c03483...c400"],"pgp_fingerprints":["1ff31b0af...d57b464df4"],"root_token":"da8e3b55-8719-4594-5378-4a9f3498387f"}
    

祝贺您!您已成功重新初始化密钥存储库。要拆封它,请参阅使用自定义钥匙拆封密封的密钥存储库