SSL-сертификаты
Пользовательские SSL-сертификаты Web-сервисов
Сертификат должен называться
ssl.crt, а ключssl.key.
Файлы пользовательского SSL-сертификата для Apache размещаются в каталоге:
/opt/multivdi/pki/apache/
Первоначальная установка Space Disp
-
Перед установкой Space Disp на хосте, подготовленном для роли Leader, необходимо создать каталог хранения SSL-сертификатов командой:
sudo mkdir -p /opt/multivdi/pki/apache -
Скопировать в каталог
/opt/multivdi/pki/apacheсертификат и ключ SSL:sudo cp ssl.crt /opt/multivdi/pki/apache/ssl.crt sudo cp ssl.key /opt/multivdi/pki/apache/ssl.key -
Установить владельца и права доступа:
sudo chown root:root /opt/multivdi/pki/apache/ssl.crt /opt/multivdi/pki/apache/ssl.key sudo chmod 0644 /opt/multivdi/pki/apache/ssl.crt sudo chmod 0600 /opt/multivdi/pki/apache/ssl.keyПример
$ sudo ls -la /opt/multivdi/pki/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/apache:sudo cp ssl.crt /opt/multivdi/pki/apache/ssl.crt sudo cp ssl.key /opt/multivdi/pki/apache/ssl.key -
Установить владельца и права доступа:
sudo chown root:root /opt/multivdi/pki/apache/ssl.crt /opt/multivdi/pki/apache/ssl.key sudo chmod 0644 /opt/multivdi/pki/apache/ssl.crt sudo chmod 0600 /opt/multivdi/pki/apache/ssl.keyПример
$ sudo ls -la /opt/multivdi/pki/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используется Apache как параметр Диффи-Хеллмана. При выполнении обновления SSL-файл должен находиться в каталоге/opt/multivdi/pki/apache.
Если требуется использовать собственный параметр Диффи-Хеллмана, необходимо заменить файл/opt/multivdi/pki/apache/dhparam.pem.
Если файл отсутствует, его можно создать командой:sudo openssl dhparam -out /opt/multivdi/pki/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-сертификаты внутренних сервисов
Изменение клиентских сертификатов space-agent-pc
Примечание
Используемые в инструкции данные сертификатов и их названия являются примерами, необходимо производить настройку в соответствии с существующей инфраструктурой.
По умолчанию space-agent-pc подключается к Space Disp с использованием TLS без валидации сертификатов. Существует возможность добавить клиентские сертификаты. Ниже представлен пример генерации и подключения клиентских сертификатов.
-
Выпустить клиентские сертификаты.
-
Настроить конфигурацию openssl.
[req] default_bits = 2048 distinguished_name = req_distinguished_name req_extensions = req_ext prompt = no [req_distinguished_name] countryName = RU stateOrProvinceName = Moscow localityName = Moscow organizationName = YourCompany organizationalUnitName = IT commonName = nats-client [req_ext] keyUsage = digitalSignature, keyEncipherment extendedKeyUsage = clientAuth -
Сгенерировать клиентский ключ и создать CSR.
openssl genrsa -out client-key.pem 2048 openssl req -new -key client-key.pem -out client.csr -config client-ext.cnf
Внимание
Если клиентские сертификаты уже выпущены, шаг 1 необходимо пропустить.
-
-
На базе CA-сертификатов, выпустивших сертификаты для NATS-сервера, выполнить подпись клиентских сертификатов.
openssl x509 -req -days 365 -in client.csr \ -CA ca_cert.pem -CAkey ca_key.pem -CAcreateserial \ -out client-cert.pem \ -extensions req_ext -extfile client-ext.cnfВнимание
При активации режима проверки CA-сертификат должен быть внесен в список доверенных в Space Client.
Стандартные самоподписанные сертификаты генерируются при первичной установке Space Disp и размещаются на узле с ролью Leader в директории
/opt/multivdi/pki/ca/. -
Выполнить валидацию корректности ключа.
-
Проверить подпись CA.
openssl verify -CAfile ca_cert.pem client-cert.pem -
Просмотреть полную информацию.
openssl x509 -in client-cert.pem -text -noout | grep -E "Subject:|Issuer:|Not After|Extended Key Usage"
-
-
Получившиеся
client-cert.pemиclient-key.pemразместить на узле, где установлен space-agent-pc, и указать их расположение в конфигурации systemd-сервиса (Linux) по пути/etc/systemd/system/space-agent-pc.service.
В командеExecStartзадать значение аргументов--certи--certkey.[Unit] Description=space-agent-pc After=syslog.target After=network.target [Service] WorkingDirectory=/opt/space-agent-pc User=root OOMScoreAdjust=-1000 ExecStart=/opt/space-agent-pc/space-agent --cert client-cert.pem --certkey client-key.pem TimeoutSec=30 Restart=on-failure KillMode=process # File logging StandardOutput=append:/opt/space-agent-pc/journal.log StandardError=append:/opt/space-agent-pc/journal.log [Install] WantedBy=multi-user.target -
При необходимости активировать усиленный режим проверки сертификатов с помощью ключа
--verify-tls.ExecStart=/opt/space-agent-pc/space-agent --cert client-cert.pem --certkey client-key.pem --verify-tls -
Если активируется усиленный режим сертификатов, то необходимо заменить сертификат NATS-сервера:
-
Создать конфигурационный файл для SAN (например,
server-san.cnf):[req] distinguished_name = req_distinguished_name req_extensions = req_ext prompt = no [req_distinguished_name] CN = nats-server [req_ext] subjectAltName = @alt_names [alt_names] IP.1 = dispatcher_address IP.2 = 127.0.0.1 DNS.1 = localhost -
Сгенерировать ключ и CSR для сервера:
openssl genrsa -out nats-server-key.pem 2048 openssl req -new -key nats-server-key.pem -out nats-server.csr -config server-san.cnf -
Подписать CSR ключом CA:
openssl x509 -req -days 365 -in nats-server.csr \ -CA ca_cert.pem -CAkey ca_key.pem -CAcreateserial \ -out nats-server-cert.pem \ -extfile server-san.cnf -extensions req_ext -
Проверить, что SAN появился:
openssl x509 -in nats-server-cert.pem -text -noout | grep -A1 "Subject Alternative Name"В выводе должен быть
IP Address:dispatcher_address. -
Заменить старые файлы сертификата и ключа NATS-сервера на новые (находятся в
/opt/multivdi/pki/nats/). -
Создать новые секреты для сертификата и ключа:
docker secret create NATS_TLS_CRT_v2 /путь/к/новому/сертификату.pem docker secret create NATS_TLS_KEY_v2 /путь/к/новому/ключу.pem -
Посмотреть имя сервиса NATS (далее
multivdi_vdi-nats-server):docker service ls | grep nats -
Обновить службу, чтобы она использовала новые секреты:
docker service update \ --secret-rm NATS_TLS_CRT \ --secret-rm NATS_TLS_KEY \ --secret-add source=NATS_TLS_CRT_v2,target=nats-cert.pem \ --secret-add source=NATS_TLS_KEY_v2,target=nats-key.pem \ multivdi_vdi-nats-server
-