Я использую http api для инициализации хранилища и шифрования ключей печати и корневого токена, но я получаю
{"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 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?
Спасибо