【问题标题】:Unable to unseal hashicorp vault after system reboot系统重新启动后无法解封 hashcorp 保管库
【发布时间】:2020-06-13 02:53:47
【问题描述】:

我在本地安装了 Vault 并启动、解封和初始化了 Vault 并添加了一些秘密。重新启动后,我无法使用密钥打开保险库。前两个开封密钥被接受没有问题,但在提交第三个密钥后,我得到一个错误响应:

Error unsealing: Error making API request.

URL: PUT https://127.0.0.1:28200/v1/sys/unseal
Code: 500. Errors:

* failed to decrypt encrypted stored keys: cipher: message authentication failed

有什么想法吗?我正在运行 Vault 版本 1.4.2。我使用的命令是vault operator unseal。服务器配置为:

vault_server.hcl

listener "tcp" {
  address = "127.0.0.1:28200"
  tls_cert_file = "/etc/vault/certs/vault_cert.crt"
  tls_key_file = "/etc/vault/certs/vault_cert.key"
}
storage "file" {
  path = "/etc/vault/mnt/data"
}

api_addr = "https://127.0.0.1:28200" # my $VAULT_ADDR is https://127.0.0.1:28200
disable_mlock = true

相关日志输出:

Jun 12 21:26:24 lambda vault[1147]: 2020-06-12T21:26:24.537-0500 [DEBUG] core: unseal key supplied
Jun 12 21:26:24 lambda vault[1147]: 2020-06-12T21:26:24.537-0500 [DEBUG] core: cannot unseal, not enough keys: keys=1 threshold=3 nonce=920f7d80-fdcc-3bc3-149e-8b069ef23acb
Jun 12 21:26:38 lambda vault[1147]: 2020-06-12T21:26:38.069-0500 [DEBUG] core: unseal key supplied
Jun 12 21:26:38 lambda vault[1147]: 2020-06-12T21:26:38.069-0500 [DEBUG] core: cannot unseal, not enough keys: keys=2 threshold=3 nonce=920f7d80-fdcc-3bc3-149e-8b069ef23acb
Jun 12 21:26:51 lambda vault[1147]: 2020-06-12T21:26:51.984-0500 [DEBUG] core: unseal key supplied

我可以在网络搜索中找到最相关的问题是那些无意中损坏了他们的存储的人:

我不确定这是否适用于此。我正在使用文件系统存储,保险库是 /etc/vault 中所有内容的所有者,我无法判断任何数据已丢失或损坏。

【问题讨论】:

  • 这是特定于第三个键的吗?您可以使用第四个或第五个键来完成开封吗?
  • 不是。使用不同顺序的键都有相同的结果。
  • 我也遇到了完全相同的问题..解决了吗..如果解决了怎么办?
  • 您解决了这个问题吗?我有同样的问题。

标签: hashicorp-vault


【解决方案1】:

我在 GKE 上使用他们的官方 vault-k8s helm chart 在 HA 模式下新安装的 vault 1.4.2 遇到了同样的问题。我将它部署在 2 个环境中。第一个没问题,但是当我尝试将第二个保管库实例加入 HA 集群时,第二个失败的方式与您描述的完全相同。我只是删除并重新安装了几次,最终成功了。

【讨论】:

    【解决方案2】:

    TLDR 摘要:保险库将始终接受密钥,直到达到最小计数,以便它可以尝试组装/使用生成的解封密钥。接受密钥并不是有效性的指标。

    保管库服务器分发的密钥实际上是“碎片”或“共享”(文档来源之间的确切术语更改),它们是通过使用 Shamir 的秘密共享拆分/密封主密钥而生成的。因为在不接受最小分片数量(默认为 3,但可以配置为不同的值)的情况下无法解密主密钥,所以在提供最小值之前,保险库服务器无法确定提供的分片是否有效,因此它可以尝试 1. 从分片生成一个解封密钥,以及 2. 将生成的密钥用于主密钥。

    Hashicorp 在这里提供了一个不错的流程概述: https://www.vaultproject.io/docs/concepts/seal

    有关 shamir 及其背后数学原理的更多信息: https://en.wikipedia.org/wiki/Shamir%27s_Secret_Sharing

    现在是坏消息:

    该错误表明您使用了一组不正确的密钥来解锁您的保险库:生成的解封密钥不正确。它们要么已更改,要么用于不同的保管库。 (也许不好的剪切-粘贴换行注入?)。虽然有些人建议重新安装,但我认为这不会解决任何问题。如果您不顾一切,可以尝试使用不同版本的 Vault,以防您的某个发行版中存在解封错误,但那是……可以达到的。

    【讨论】:

      【解决方案3】:

      我遇到了完全相同的问题。事实证明,我没有使用正确的密钥(我使用的是在别处复制的旧密钥)。使用正确的密钥后,我能够毫无问题地打开保险库。

      https://discuss.hashicorp.com/t/not-able-to-unseal-vault-after-container-pod-restart/16797

      【讨论】:

        猜你喜欢
        • 2018-05-16
        • 1970-01-01
        • 2016-10-04
        • 1970-01-01
        • 1970-01-01
        • 2020-12-02
        • 2012-10-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多