I have been trying all day without success to get Vault to allow https connection.
The configuration is: Ubuntu EC2 AWS server with Vault installed.
WORKING HTTP
I can run Vault and connect by http if I do two things:
- set
export VAULT_ADDR=http://127.0.0.1:8200and - in
nano /etc/vault.d/vault.hclset:
listener "tcp" {
address = "0.0.0.0:8200"
tls_disable = 1
}
With this configuration I can go to http://ipaddress:8200 or http://domainname.com:8200 and see the vault login page. I can also run vault status & vault operator unseal when needed and unlock the vault and get normal status outputs.
CHANGE TO HTTPS?
Once I try to change to https however, everything breaks down.
The steps I have tried in various combinations are:
- set
export VAULT_ADDR=https://127.0.0.1:8200 - in
nano /etc/vault.d/vault.hclset:
listener "tcp" {
address = "0.0.0.0:8200"
tls_disable = 0
tls_disable_client_certs = "true"
tls_cert_file = "/opt/vault/tls/tls.crt"
tls_key_file = "/opt/vault/tls/tls.key"
}
- copy my certificate (concatenated as main cert plus bundle certs all in one file) as
tls.crtat this path andtls.keyfor my private key (confirmed they are readable from command line at these file locations also) - restart the Vault service with
sudo systemctl restart vault - try to unseal with
vault operator unseal - update certs with
sudo pkill -SIGHUP vault
However, none of this works. I cannot get vault to run or unseal or provide any useful output once I have made the above changes.
As soon as I update VAULT_ADDR=https://127.0.0.1:8200, comment in the new listener in vault.hcl, and run sudo systemctl restart vault everything is broken.
vault status gives
Error checking seal status: Get "https://127.0.0.1:8200/v1/sys/seal-status": dial tcp 127.0.0.1:8200: connect: connection refused
vault operator unseal allows me to put in a key but then says:
Error unsealing: Put "https://127.0.0.1:8200/v1/sys/unseal": dial tcp 127.0.0.1:8200: connect: connection refused
telnet 127.0.0.1 8200 gives telnet: Unable to connect to remote host: Connection refused
What am I supposed to do? I cannot for the life of me find any reference or anything that can suggest a solution or how this is supposed to work.
Puzzlingly, I also find there is an environmental variable for CAPATH which I do not know the point of.
Are we not supposed to be setting the path to our https certificate and key files in the listener as above? Are we supposed to set it twice?
What might be the missing link? Any help? I am at my wit’s end and can’t solve this. Thanks for any suggestions or ideas of any kind.