使用http api初始化Vault不接受base64 gpg密钥,但CLI可以

时间:2019-06-20 10:37:42

标签: hashicorp-vault

我正在使用http api初始化Vault并对加密密钥和根令牌进行加密,但是我得到了

{"errors":["error decoding given PGP key: illegal base64 data at input byte 21"]}

但是当我使用CLI时,它可以工作。

如何使其适用于http api?

这是使用ubuntu 18.04和gpg(GnuPG)v2.2.4,base64 v8.28,最新的保管库完成的

这是有效的命令行界面命令,并返回加密的密封密钥和根令牌:

./vault operator init -key-shares=2 -key-threshold=2  -address="http://127.0.0.1:8200" -format="json" -root-token-pgp-key="mo.asc" -pgp-keys="mo.asc,mo.asc"

以上内容与使用Vault实例启动时所在的目录相同。

./vault server -config=vaultconfig.hcl

vaultconfig.hcl包含

storage "inmem" {}

listener "tcp" {
 address     = "127.0.0.1:8200"
 tls_disable = 1
}

mo.asc使用以下方法获得:

gpg --gen-key
gpg --export <generated key> | base64 > mo.asc

使用不可用的http api的命令

curl --request PUT --data @payload.json http://127.0.0.1:8200/v1/sys/init

payload.json是

{
  "secret_shares": 2,
  "secret_threshold": 2,
  "pgp_keys": [
    "mo.asc",
    "mo.asc"
  ],
  "root_token_pgp_key": "mo.asc"
}

这将返回:

{"errors":["error decoding given PGP key: illegal base64 data at input byte 21"]}

但是如果我将payload.json更改为

{
  "secret_shares": 2,
  "secret_threshold": 2
}

它可以返回

  {
    "keys": [
      "227e3b43a76b54008249b39285ae1063db0e2bff94bad0f349f4b7fa89195fb7d7",
      "2ab2f5ec67191c26735116f5a1cc9b3bab406eff7b57d9632359a0797f2cf5fd3e"
    ],
    "keys_base64": [
      "In47Q6drVACCSbOSha4QY9sOK/+UutDzSfS3+okZX7fX",
      "KrL17GcZHCZzURb1ocybO6tAbv97V9ljI1mgeX8s9f0+"
    ],
    "root_token": "s.s2GZsomY2tGJfQzHGFjqlYNu"
  }

似乎CLI命令接受我的gpg已被base64加密,但是http api不接受它已被加密。尽管CLI似乎在下面使用http api。 http api有效,但是仅当我将asc文件添加到payload.json时,它才起作用。

我想念什么吗? 我怎么想,以便通过http api初始化Vault时获得加密的根令牌和密钥?

谢谢

0 个答案:

没有答案