#https #docker-compose #openssl #hashicorp-vault #vault
#https #docker-compose #openssl #hashicorp-хранилище #хранилище
Вопрос:
Я пытаюсь запустить Vault с помощью docker-compose на виртуальной машине ubuntu 20.04 (ip: 192.168.56.9 ). Без https уже работает нормально, но когда я пытаюсь поместить vault в https с самозаверяющим сертификатом из openssl, это не работает.
Здесь мои конфигурации :
docker-compose.yml :
version: '3.6'
services:
vault:
build:
context: ./vault
dockerfile: Dockerfile
ports:
- 8200:8200
volumes:
- ./vault/config:/vault/config
- ./vault/policies:/vault/policies
- ./vault/data:/vault/data
- ./vault/logs:/vault/logs
- ./vault/volume_test/:/vault/volume_test
environment:
- VAULT_ADDR=http://192.168.56.9:8200
command: server -config=/vault/config/vault-config.conf
cap_add:
- IPC_LOCK
Dockerfile :
# base image
FROM alpine:3.7
# set vault version
ENV VAULT_VERSION 0.10.3
# create a new directory
RUN mkdir /vault
# download dependencies
RUN apk --no-cache add
bash
ca-certificates
wget
# download and set up vault
RUN wget --quiet --output-document=/tmp/vault.zip https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip amp;amp;
unzip /tmp/vault.zip -d /vault amp;amp;
rm -f /tmp/vault.zip amp;amp;
chmod x /vault
# update PATH
ENV PATH="PATH=$PATH:$PWD/vault"
# add the config file
COPY ./config/vault-config.conf /vault/config/vault-config.conf
# expose port 8200
EXPOSE 8200
# run vault
ENTRYPOINT ["vault"]
Мое хранилище-config.conf :
backend "file" {
path = "vault/data"
}
listener "tcp" {
address = "0.0.0.0:8200"
tls_disable = false
tls_cert_file = "/home/xxx/Vault-Docker/domain.crt"
tls_key_file = "/home/xxx/Vault-Docker/domain.key"
}
#api_addr = "http://192.168.56.9:8200"
disable_mlock = true
ui = true
Как я создаю my .crt и my .key :
Создайте файл cert.conf в /home/xxx/Vault-Docker/ :
[req]
default_bits = 4096
default_md = sha256
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = FR
ST = VA
L = SomeCity
O = MyCompany
OU = MyDivision
CN = 192.168.56.9
[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
IP.1 = 192.168.56.9
И извольте в /home/xxx/Vault-Docker/ :
openssl req -nodes -x509 -days 365 -keyout domain.key -out domain.crt -config cert.conf
Но когда я запускаю :
docker-compose up -d --build
Затем :
docker logs vault-docker_vault_1
Вывод :
Error initializing listener of type tcp: error loading TLS cert: open /home/xxx/Vault-Docker/domain.crt: no such file or directory
Кто-нибудь скажет мне, где моя ошибка?
Большое спасибо!
Комментарии:
1. почему вы не указали файл CA, сгенерированный самозаверяющим openssl? и вы также должны смонтировать сертификат в контейнер с вашего хоста
Ответ №1:
Это потому, что ваша конфигурация сертификата не смонтирована внутри контейнера. Чтобы исправить это, вам необходимо:
- создайте новый каталог
./vault/cert
- переместите оба
domain.crt
иdomain.key
в./vault/cert
- добавить в
docker-compose-yml
новый том:
volumes:
...
- ./vault/cert/:/vault/cert
...
- Измените на
vault-config.conf
с/home/.../domain*
/vault/cert/domain*
на в обеихtls_cert_*
директивах
Тогда Vault сможет найти сертификаты.
Ответ №2:
Вы указываете путь к сертификату, который будет путем к контейнеру, и вы сохранили сертификат на хост-компьютере.