SSL-сертификаты
Пользовательские SSL-сертификаты web-сервисов
Сертификат должен называться
ssl.crt, а ключssl.key.
Файлы пользовательского SSL-сертификата для NGINX и Apache размещаются в каталоге:
/opt/multivdi/pki/nginx-apache/
Первоначальная установка Space Disp
-
Перед установкой Space Disp на хосте, подготовленном для роли Leader, необходимо создать каталог хранения SSL-сертификатов командой:
sudo mkdir -p /opt/multivdi/pki/nginx-apache -
Скопировать в каталог
/opt/multivdi/pki/nginx-apacheсертификат и ключ SSL:sudo cp ssl.crt /opt/multivdi/pki/nginx-apache/ssl.crt sudo cp ssl.key /opt/multivdi/pki/nginx-apache/ssl.key -
Установить владельца и права доступа:
sudo chown root:root /opt/multivdi/pki/nginx-apache/ssl.crt /opt/multivdi/pki/nginx-apache/ssl.key sudo chmod 0644 /opt/multivdi/pki/nginx-apache/ssl.crt sudo chmod 0600 /opt/multivdi/pki/nginx-apache/ssl.keyПример
$ sudo ls -la /opt/multivdi/pki/nginx-apache/ итого 8 drwx------ 2 root root 4096 фев 18 16:44 . drwx------ 6 root root 4096 фев 18 16:44 .. -rw-r--r-- 1 root root 1342 фев 18 16:44 ssl.crt -rw------- 1 root root 1700 фев 18 16:44 ssl.key
Примечание
Если файл dhparam.pem отсутствует, то при первоначальной установке он будет создан автоматически.
Обновление SSL-сертификатов web-сервисов
-
Для обновления SSL-сертификатов на существующей инфраструктуре необходимо скопировать новые сертификат и ключ в каталог
/opt/multivdi/pki/nginx-apache:sudo cp ssl.crt /opt/multivdi/pki/nginx-apache/ssl.crt sudo cp ssl.key /opt/multivdi/pki/nginx-apache/ssl.key -
Установить владельца и права доступа:
sudo chown root:root /opt/multivdi/pki/nginx-apache/ssl.crt /opt/multivdi/pki/nginx-apache/ssl.key sudo chmod 0644 /opt/multivdi/pki/nginx-apache/ssl.crt sudo chmod 0600 /opt/multivdi/pki/nginx-apache/ssl.keyПример
$ sudo ls -la /opt/multivdi/pki/nginx-apache/ итого 12 drwx------ 2 root root 4096 фев 18 16:44 . drwx------ 6 root root 4096 фев 18 16:44 .. -rw------- 1 root root 424 фев 18 16:44 dhparam.pem -rw-r--r-- 1 root root 1342 фев 18 16:44 ssl.crt -rw------- 1 root root 1700 фев 18 16:44 ssl.keyПримечание
Файл
dhparam.pemиспользуется NGINX как параметр Диффи-Хеллмана. При выполнении обновления SSL-файл должен находиться в каталоге/opt/multivdi/pki/nginx-apache.
Если требуется использовать собственный параметр Диффи-Хеллмана, необходимо заменить файл/opt/multivdi/pki/nginx-apache/dhparam.pem.
Если файл отсутствует, его можно создать командой:sudo openssl dhparam -out /opt/multivdi/pki/nginx-apache/dhparam.pem 2048 -
Примонтировать установочный iso-образ Space Disp и запустить выполнение
sslкомандой:sudo bash /media/cdrom/install.sh sslВо время выполнения происходит:
-
Удаление текущего стека
multivdi. -
Удаление старых Docker Secrets с сертификатами.
-
Создание новых Docker Secrets из файлов в каталоге
/opt/multivdi/pki. -
Повторное создание стека
multivdi. -
Перезагрузка Apache.
-
-
Проверить, что сертификаты обновились. Для этого необходимо в окне браузера открыть
https://server_ip_address.
Пользовательские SSL-сертификаты внутренних сервисов
Обновление сертификатов внутренних сервисов
Через команду ssl можно заменить только сертификаты Redis.
Используемые файлы Redis
CA:
/opt/multivdi/pki/ca/ca_cert.pem
/opt/multivdi/pki/ca/ca_key.pem
Redis server certificate:
/opt/multivdi/pki/redis/srv_cert.pem
/opt/multivdi/pki/redis/srv_key.pem
Примечания
Закрытый ключ CA /opt/multivdi/pki/ca/ca_key.pem используется только для выпуска и перевыпуска сертификатов.
В Docker Secrets передается только CA-сертификат /opt/multivdi/pki/ca/ca_cert.pem.
Порядок обновления сертификатов Redis
-
Подготовить новый файл CA, если требуется.
-
Выпустить новый сертификат Redis server.
-
Убедиться, что сертификат Redis server подписан выбранным CA.
-
Скопировать файлы в соответствующие каталоги:
/opt/multivdi/pki/ca/ /opt/multivdi/pki/redis/ -
Примонтировать установочный ISO-образ Space Disp и запустить выполнение
ssl:sudo bash /media/cdrom/install.sh sslВо время выполнения будут пересозданы Docker Secrets для Redis и web-сертификатов, после чего стек
multivdiбудет создан заново.
Внимание
Если меняется CA, необходимо одновременно заменить и Redis server certificate, подписанный этим CA.
Нельзя заменить только CA без замены зависимого Redis-сертификата.
Пример генерации тестовых сертификатов Redis
-
Создать временный каталог:
mkdir -p /tmp/multivdi-test-pki cd /tmp/multivdi-test-pki -
Сгенерировать тестовый CA:
openssl req -x509 -newkey rsa:2048 -nodes \ -keyout ca_key.pem \ -out ca_cert.pem \ -days 365 \ -subj "/CN=multivdi-test-ca" \ -addext "basicConstraints=critical,CA:TRUE" \ -addext "keyUsage=critical,keyCertSign,cRLSign" -
Сгенерировать сертификат Redis server:
cat > redis_srv.ext <<EOF [v3_req] basicConstraints=CA:FALSE keyUsage=digitalSignature,keyEncipherment extendedKeyUsage=serverAuth subjectAltName=DNS:vdi-redis,DNS:vdi-redis.multivdi,DNS:localhost,IP:127.0.0.1 EOFopenssl req -newkey rsa:2048 -nodes \ -keyout redis_srv_key.pem \ -out redis_srv.csr \ -subj "/CN=vdi-redis"openssl x509 -req \ -in redis_srv.csr \ -CA ca_cert.pem \ -CAkey ca_key.pem \ -CAcreateserial \ -out redis_srv_cert.pem \ -days 365 \ -extfile redis_srv.ext \ -extensions v3_req -
Проверить сертификат Redis:
openssl verify -CAfile ca_cert.pem redis_srv_cert.pemОжидаемый результат:
redis_srv_cert.pem: OK -
Проверить SAN у Redis server:
openssl x509 -in redis_srv_cert.pem -noout -subject -ext subjectAltNameОжидаемый результат:
DNS:vdi-redis, DNS:vdi-redis.multivdi, DNS:localhost, IP Address:127.0.0.1 -
Разложить сертификаты по каталогам
-
Создать директории:
sudo mkdir -p /opt/multivdi/pki/ca sudo mkdir -p /opt/multivdi/pki/redis -
Скопировать CA:
sudo cp ca_cert.pem /opt/multivdi/pki/ca/ca_cert.pem sudo cp ca_key.pem /opt/multivdi/pki/ca/ca_key.pem -
Скопировать сертификаты Redis:
sudo cp redis_srv_cert.pem /opt/multivdi/pki/redis/srv_cert.pem sudo cp redis_srv_key.pem /opt/multivdi/pki/redis/srv_key.pem -
Установить владельца и права доступа:
sudo chown root:root /opt/multivdi/pki/ca/ca_cert.pem sudo chown root:root /opt/multivdi/pki/ca/ca_key.pem sudo chown root:root /opt/multivdi/pki/redis/srv_cert.pem sudo chown root:root /opt/multivdi/pki/redis/srv_key.pem sudo chmod 0644 /opt/multivdi/pki/ca/ca_cert.pem sudo chmod 0600 /opt/multivdi/pki/ca/ca_key.pem sudo chmod 0644 /opt/multivdi/pki/redis/srv_cert.pem sudo chmod 0600 /opt/multivdi/pki/redis/srv_key.pem -
Проверить целевой файл:
sudo openssl verify \ -CAfile /opt/multivdi/pki/ca/ca_cert.pem \ /opt/multivdi/pki/redis/srv_cert.pemОжидаемый результат:
/opt/multivdi/pki/redis/srv_cert.pem: OK
-
-
Запустить обновление. После подготовки файлов необходимо примонтировать установочный ISO-образ Space Disp и выполнить команду:
sudo bash /media/cdrom/install.sh ssl -
После выполнения команды необходимо проверить, что сервисы успешно запустились.