LINUX.ORG.RU
решено ФорумAdmin

hashicorp vault: connection refused

 ,


0

1

Здравствуйте. Настраиваю hashicorp vault на сервере на ubuntu. Сначала сделал временно доступ по http, всё работало, затем сгенерировал сертификаты, настроил https, и теперь при попытке выполнить команду:

vault status

в консоль выводится следующая ошибка:

Error checking seal status: Get "https://<...>:8200/v1/sys/seal-status": dial tcp <мой ip>:8200: connect: connection refused

Сейчас настройки http(s) в vault.hcl выглядят так:

# HTTP listener
listener "tcp" {
  address = "127.0.0.1:8201"
  tls_disable = 1
}

# HTTPS listener
listener "tcp" {
  address       = "0.0.0.0:8200"
  tls_cert_file = "/etc/ssl/vault/cert.pem"
  tls_key_file  = "/etc/ssl/vault/cert.key"
}

В чём может быть причина ошибки и как фиксить?

ПС. По http теперь тоже не подключается и веб-админка пропала



Последнее исправление: page-up (всего исправлений: 2)
sudo nano /etc/vault.hcl

Вставьте в файл следующие строки:

backend "file" {
path = "/var/lib/vault"
}
listener "tcp" {
tls_disable = 0
tls_cert_file = "/etc/letsencrypt/live/example.com/fullchain.pem"
tls_key_file = "/etc/letsencrypt/live/example.com/privkey.pem"
}

Согласно этому конфигурационному файлу Vault хранит зашифрованные секреты в /var/lib/vault на диске и прослушивает соединения через HTTPS, используя сертификаты, созданные в мануале по Let’s Encrypt.

Сохраните и закройте файл, а затем ограничьте доступ к Vault, передав право на чтение пользователю vault.

sudo chown vault:vault /etc/vault.hcl
sudo chmod 640 /etc/vault.hcl
sudo nano /etc/systemd/system/vault.service

Скопируйте и вставьте в файл следующие строки. Это позволит Vault работать в фоновом режиме в качестве постоянного системного демона.

[Unit]
Description=a tool for managing secrets
Documentation=https://vaultproject.io/docs/
After=network.target
ConditionFileNotEmpty=/etc/vault.hcl
[Service]
User=vault
Group=vault
ExecStart=/usr/local/bin/vault server -config=/etc/vault.hcl
ExecReload=/usr/local/bin/kill --signal HUP $MAINPID
CapabilityBoundingSet=CAP_SYSLOG CAP_IPC_LOCK
Capabilities=CAP_IPC_LOCK+ep
SecureBits=keep-caps
NoNewPrivileges=yes
KillSignal=SIGINT
[Install]
WantedBy=multi-user.target

Vault нужны права на чтение сертификатов, созданных с помощью Certbot. По умолчанию эти сертификаты и закрытые ключи доступны только пользователю root. Чтобы сделать их доступными для Vault, но не открывать всем, создайте специальную группу pki для доступа к этим файлам, а затем добавьте в нее пользователя vault.

Создайте группу pki:

sudo groupadd pki

Обновите права доступа к каталогам в /etc/letsencrypt, чтобы группа pki могла прочитать содержимое.

sudo chgrp pki /etc/letsencrypt/{archive,live}
sudo chmod g+rx /etc/letsencrypt/{archive,live}

Затем добавьте пользователя vault в группу pki. Это предоставит Vault доступ к сертификатам, чтобы он мог безопасно обрабатывать запросы по HTTPS.

sudo gpasswd -a vault pki

Теперь для удобства добавьте правило в /etc/hosts, чтобы направлять запросы Vault на localhost.

Замените example.com в следующей команде своим доменом, на который вы получили сертификат Let’s Encrypt:

echo 127.0.0.1 example.com | sudo tee -a /etc/hosts

Теперь можно запустить Vault и инициализировать хранилище конфиденциальных данных.

anonymous
()
Ответ на: комментарий от anonymous

Сделал в соответсвии с этой инструкцией (только пути другие), теперь такая ошибка:

$ sudo -u vault vault status
Error checking seal status: Get "https://127.0.0.1:8200/v1/sys/seal-status": x509: cannot validate certificate for 127.0.0.1 because it doesn't contain any IP SANs

Как фиксить?

page-up
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.