はじめに
Vault サーバを検証用途で利用目的で簡易的にサーバを立ち上げる Dev モードが容易されていますが、Dev モードでは TLS が無効になっています。それはそれで都合がよいのですが、TLS を利用して検証したいときには不便です。
自己証明書の作成からコンテナを利用して非 Dev モードで Vault サーバを起動する手順を残します。
手順
$ brew install cfssl
$ echo '{"CN":"CA","key":{"algo":"rsa","size":2048}}' | cfssl gencert -initca - | cfssljson -bare ca -
$ echo '{"signing":{"default":{"expiry":"43800h","usages":["signing","key encipherment","server auth","client auth"]}}}' > ca-config.json
$ export ADDRESS=127.0.0.1,localhost
$ export NAME=server
$ echo '{"CN":"'$NAME'","hosts":[""],"key":{"algo":"rsa","size":2048}}' | cfssl gencert -config=ca-config.json -ca=ca.pem -ca-key=ca-key.pem -hostname="$ADDRESS" - | cfssljson -bare $NAME
$ cat <<EOL > config.hcl
storage "inmem" {}
listener "tcp" {
address = "0.0.0.0:8200"
tls_cert_file = "/data/server.pem"
tls_key_file = "/data/server-key.pem"
}
EOL
$ docker run --name vault -d -p 8200:8200 -v $(pwd):/data --cap-add=IPC_LOCK vault server -config /data/config.hcl
$ export VAULT_CACERT=$(pwd)/ca.pem
$ vault operator init -key-shares=1 -key-threshold=1
$ vault operator unseal $UNSEAL_KEY
$ vault login $ROOT_TOKEN
$ vault kv put secret/password -value=mypassword
$ vault kv get secret/password
$ docker kill vault