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

Данная инструкция актуальна только для zVirt версии 3.3 и выше.

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

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

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

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

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

    Для версии zVirt 4.1 файл должен быть защищен паролем mypass.
  • /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. Если сертификат apache.p12 подписан промежуточным сертификатом предприятия, то нужно подготовить файл для добавления в хранилище сертификатов: нужно скомпоновать единый файл ca.pem, где сначала указывается промежуточный сертификат, а после него корневой сертификат.

    -----BEGIN CERTIFICATE-----
    Промежуточный сертификат
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    Корневой сертификат
    -----END CERTIFICATE-----
  6. Добавьте сертификат ЦС в список доверенных сертификатов (пароль mypass), например:

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

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

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

    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
  10. Скопируйте закрытый ключ:

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

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

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

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

    systemctl restart httpd.service
  15. В конфигурационном файле /usr/share/zvirt-engine/services/zvirt-engine-backend/zvirt-engine-backend.conf сервиса измените параметр SERVER_SSL_KEY_STORE_PASSWORD (если строка отсутствует - добавьте), для которого укажите пароль от вашего сертификата /root/apache.p12. Если пароль не используется, то оставьте поле пустым (без кавычек: SERVER_SSL_KEY_STORE_PASSWORD=)

    Пример 1. Пример содержимого файла /usr/share/zvirt-engine/services/zvirt-engine-backend/zvirt-engine-backend.conf
    ENGINE_DEBUG_ADDRESS=*:8686
    JBACKEND_HOME=/usr/share/java/zvirt/
    SERVER_SSL_KEY_STORE_PASSWORD=apachep12pass
    В zVirt 4.1 используйте пароль mypass, т.е. SERVER_SSL_KEY_STORE_PASSWORD=mypass.

    Для версии zVirt 3.3 предварительно скачайте файлы zvirt-engine-backend.conf и zvirt-engine-backend.py.

    Скопируйте их в каталог /usr/share/zvirt-engine/services/zvirt-engine-backend/ с заменой (в примере нужные файлы скачаны в каталог /root):

    cp /root/zvirt-engine-backend.py /usr/share/zvirt-engine/services/zvirt-engine-backend/zvirt-engine-backend.py
    cp /root/zvirt-engine-backend.conf /usr/share/zvirt-engine/services/zvirt-engine-backend/zvirt-engine-backend.conf

    Также в zVirt 3.3 вместо параметра SERVER_SSL_KEY_STORE_PASSWORD используется SSL_PASSWORD. Например:

    ENGINE_DEBUG_ADDRESS=*:8686
    JBACKEND_HOME=/usr/share/java/zvirt/
    SSL_PASSWORD=apachep12pass
  16. Перезапустите сервис backend.

    systemctl restart zvirt-engine-backend.service
  17. Скопируйте файл /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
  18. Перезапустите службу websocket-proxy:

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

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

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

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

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

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