Замена SSL-сертификата для веб-портала (zVirt 3.2 и ниже)

Данная инструкция актуальна только для zVirt версии 3.2 и ниже.

Сертификат стороннего ЦС (Certificate Authority) предоставляется в виде PEM-файла. Цепочка сертификатов должна быть полной вплоть до корневого сертификата. Порядок цепочки сертификатов является критически важным, цепочка должна строится от последнего промежуточного ЦС до корневого ЦС. В противном случае при проверка подлинности сервера может произойти сбой.

Закрытый ключ предоставляется в виде KEY-файла.

1. Соглашения

  • /root - расположение файлов полученных от ЦС или в процессе выполнения процедуры замены.

  • /root/apache.p12 - сертификат полученный от ЦС в формате PKCS#12.

  • /root/ca.pem - сертификат ЦС.

  • /root/apache.key - новый закрытый ключ веб-сервера.

  • /root/apache.cer - новый сертификат веб-сервера.

  • Файл с расширением pfx должен содержать внутри себя закрытый ключ для дальнейшей успешной конвертации.

  • Файл с расширением pfx , содержащий внутри себя закрытый ключ, может быть переименован в файл с расширением p12 без дополнительной конвертации.

  • Файл с расширением pem должен быть в кодировке BASE-64 . Проверить корректной кодировки BASE-64 можно открыв данный сертификат блокнотом. Если кодировка корректна, то сертификат будет расположен между строками -----BEGIN CERTIFICATE----- и -----END CERTIFICATE----- . Если в файле с расширением pem используется кодировка DER, то произвести конвертацию в BASE-64 можно командной:

openssl x509 -in input.cer -inform DER -out output.pem

2. Описание процедуры замены SSL-сертификата

Внутренний ЦС хранит ключ и сертификат в формате .p12 в каталоге /etc/pki/ovirt-engine/keys. Сохраните новый файл в том же месте.

  1. Создайте резервную копию текущего файла apache.p12, например:

    cp -p /etc/pki/ovirt-engine/keys/apache.p12 /etc/pki/ovirt-engine/keys/apache.p12.bck
  2. Замените текущий файл новым, например:

    cp /root/apache.p12 /etc/pki/ovirt-engine/keys/apache.p12
  3. Извлеките закрытый ключ и сертификат.

    Если файл защищен паролем, необходимо добавить -passin pass:<your_password>, заменив <your_password> на действительный пароль.

    openssl pkcs12 -in /etc/pki/ovirt-engine/keys/apache.p12 -nocerts -nodes > /root/apache.key
    openssl pkcs12 -in /etc/pki/ovirt-engine/keys/apache.p12 -nokeys > /root/apache.cer
  4. Если zVirt развернут в режиме Hosted Engine, необходимо перейти в консоль хоста и включить режим глобального обслуживания:

    hosted-engine --set-maintenance --mode=global
  5. Добавьте сертификат ЦС в список доверенных сертификатов, например:

    cp /root/ca.pem /etc/pki/ca-trust/source/anchors
    update-ca-trust
  6. Менеджер управления использует файл /etc/pki/ovirt-engine/apache-ca.pem, который является символической ссылкой на файл /etc/pki/ovirt-engine/ca.pem. Удалите символическую ссылку:

    rm /etc/pki/ovirt-engine/apache-ca.pem
  7. Сохраните сертификат ЦС, как файл /etc/pki/ovirt-engine/apache-ca.pem:

    cp /root/ca.pem /etc/pki/ovirt-engine/apache-ca.pem
  8. Создайте резервную копию существующего закрытого ключа и сертификата:

    cp /etc/pki/ovirt-engine/keys/apache.key.nopass /etc/pki/ovirt-engine/keys/apache.key.nopass.bck
    cp /etc/pki/ovirt-engine/certs/apache.cer /etc/pki/ovirt-engine/certs/apache.cer.bck
  9. Скопируйте закрытый ключ:

    cp /root/apache.key /etc/pki/ovirt-engine/keys/apache.key.nopass
  10. Установите владельцем закрытого ключа пользователя root и задайте права доступа 0640:

    chown root:ovirt /etc/pki/ovirt-engine/keys/apache.key.nopass
    chmod 640 /etc/pki/ovirt-engine/keys/apache.key.nopass
  11. Скопируйте сертификат:

    cp /root/apache.cer /etc/pki/ovirt-engine/certs/apache.cer
  12. Установите владельцем сертификата пользователя root и задайте права доступа 0644:

    chown root:ovirt /etc/pki/ovirt-engine/certs/apache.cer
    chmod 644 /etc/pki/ovirt-engine/certs/apache.cer
  13. Перезапустите веб-сервер:

    systemctl restart httpd.service
  14. Создайте новый конфигурационный файл доверенных сертификатов /etc/ovirt-engine/engine.conf.d/99-custom-truststore.conf со следующими параметрами:

    ENGINE_HTTPS_PKI_TRUST_STORE="/etc/pki/java/cacerts"
    ENGINE_HTTPS_PKI_TRUST_STORE_PASSWORD=""

    Если каталог engine.conf.d отсутствует, создайте его с помощью команды:

    mkdir -p /etc/ovirt-engine/engine.conf.d/
  15. Скопируйте файл /etc/ovirt-engine/ovirt-websocket-proxy.conf.d/10-setup.conf и измените индекс в файле на значение, которое больше 10 (например, 99-setup.conf). Добавьте следующие параметры в новый файл:

    SSL_CERTIFICATE=/etc/pki/ovirt-engine/certs/apache.cer
    SSL_KEY=/etc/pki/ovirt-engine/keys/apache.key.nopass
  16. Перезапустите службу websocket-proxy:

    systemctl restart ovirt-websocket-proxy.service
  17. Если вручную производились изменения файла /etc/ovirt-provider-ovn/conf.d/10-setup-ovirt-provider-ovn.conf или используется файл конфигурации более ранней версии zVirt, необходимо убедиться, что менеджер управления по-прежнему настроен на использование /etc/pki/ovirt-engine/apache-ca.pem в качестве сертификата.

  18. Настройте engine-backup на обновление системы при восстановлении. Создайте новый файл /etc/ovirt-engine-backup/engine-backup-config.d/update-system-wide-pki.sh со следующим содержимым:

    BACKUP_PATHS="${BACKUP_PATHS}
    /etc/ovirt-engine-backup"
    cp -f /etc/pki/ovirt-engine/apache-ca.pem \
    /etc/pki/ca-trust/source/anchors/ca.pem
    update-ca-trust

    Если каталог engine-backup-config.d отсутствует, создайте его с помощью команды:

    mkdir -p /etc/ovirt-engine-backup/engine-backup-config.d/
  19. Перезапустите сервис ovirt-provider-ovn:

    systemctl restart ovirt-provider-ovn.service
  20. Перезапустите сервис ovirt-imageio:

    systemctl restart ovirt-imageio.service
  21. Перезапустите сервис ovirt-engine:

    systemctl restart ovirt-engine.service
  22. Если zVirt развернут в режиме Hosted Engine, необходимо перейти в консоль хоста и выключить режим глобального обслуживания:

    hosted-engine --set-maintenance --mode=none