Сертификаты безопасности и SSL в VMware ESXi и vCenter Server

ESXi и vCenter Server поддерживают стандартные X.509 v3 сертификаты для криптования соединения через SSL (Secure Socet Layer). Проверка сертификатов включена по умолчанию и SSL сертификаты используются для шифрования сетевого трафика. Тем не менее, при использовании ESXi и vCenter Server сертификаты автоматически генерируются при установке и хранятся на серверной системе. Эти сертификаты уникальны и уже позволяют получить доступ к серверу через SSL, но они непроверяемы и не подписаны “доверенным центром сертификации”. Таким образом, сертификаты по умолчанию являются уязвимыми.

Для того, чтобы получить наибольшую безопасность при использовании SSL-соединения (особенно, если вы собираетесь использовать соединение из-вне) необходимо сгенерировать новые подписанные сертификаты. Если сертификаты не установлены, связь между сервером и vCenter vSphere клиентами зашифрована с использованием самозаверенного сертификата, которого недостаточно для безопасной аутентификации в производственной среде.

Сертификат состоит из двух файлов:

rui.crt — непосредственно сам сертификат,
rui.key — “скрытый” ключ.

Дефолтное расположение сертификатов следующее:

  • Для ESXi5.0/6.0: /etc/vmware/ssl/
  • Для vCenter Server в Windows 2008/2012: 
    C:\Program Data\VMware\VMware VirtualCenter\SSL

Использование сертификатов в vCenter Server.

В vCenter Server проверка сертификатов включена по умолчанию. Для того, чтобы убедиться подключитесь к vCenter Server с помощью vSphere Client и выберите:

Administration > vCenter Server Settings

Затем проверьте SSL Settings на левой панели и убедитесь, что выбран пункт Check host certificates.

Создание нового сертификата для ESXi.

Если вы изменили имя хоста ESXi, удалили сертификаты, или возникли какие-то другие обстоятельства, при которых необходимо сгенировать новые выполните следующие действия:

1. Подключитесь к вашему ESXi хосту через SSH и получите root-привилегии.

2. Создайте резервную копию существующих сертификатов командами:

# cd /etc/vmware/ssl
# mv rui.crt orig.rui.crt
# mv rui.key orig.rui.key

3. Для генерации новых сертификатов:

# /sbin/generate-certificates

По завершению вы получите предупреждение:

WARNING: can’t open config file: /usr/ssl/openssl.cnf

или

WARNING: can’t open config file: /etc/pki/tls/openssl.cnf

Предупреждение можно проигнорировать — новые сертификаты созданы. Выполнив команду:

# ls -la

можно сравнить время создания файлов сертификатов.

4. Восстанавливаем атрибуты для созданных файлов сертификатов:

# chmod +t rui.crt
# chmod +t rui.key

5. Перезагружаем хост ESXi.

Создание подписанных сертификатов для ESXi.

В качестве центра сертификации (CA) можно использовать OpenSSL. И хотя шаги для создания сертификатов в различных операционных системах могут несколько отличаться, общий принцип един, поскольку vSphere использует X.509 v3 SSL сертификаты.

ВНИМАНИЕ! Перед началом убедитесь, что вы используете OpenSSL версии 0.9.8, иначе работа SSL не гарантируется.

Для упрощения установки OpenSSL в ОС Windows можно воспользоваться Shining Light Installer’ом, в то время как во FreeBSD и в большинстве Linux-дистрибутивов этот пакет уже установлен по умолчанию. В Windows так же потребуется установить Microsoft Visual C++ 2008 Redistributable Package (x86).

Перед тем, как приступить к конфигурированию OpenSSL, создайте бэкап openssl.cfg:

В Windows:

> cd C:\OpenSSL-Win32\bin
> copy openssl.cfg.txt openssl.cfg.bak

Во FreeBSD и Debian:

# cd /etc/ssl/
# cp openssl.cnf openssl.cnf.backup

В CentOS:

# cd /etc/pki/tls/
# cp openssl.cnf openssl.cnf.backup

В других Linux-дистрибутивах расположение файла может отличаться.

Теперь непосредственно сам конфиг, который нужно привести к следующему виду:

[ req ]
default_bits = 2048
default_keyfile = rui.key
distinguished_name = req_distinguished_name
encrypt_key = no
prompt = no
string_mask = nombstr
req_extensions = v3_req
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName = DNS:esxi5, IP:172.1.0.10, DNS:esxi5.domain.com
[ req_distinguished_name ]
countryName = RU
stateOrProvinceName = SPB
localityName = Saint-Petersburg
0.organizationName = VMWare
organizationalUnitName = vCenterInventoryService
commonName = esxi5.domain.com

Жирным выделенные поля для заполнения. Если вы не укажете эти параметры можете ввести их при создании сертификата. Следующая команда создаст rui.csr:

openssl req -new -nodes -out rui.csr -keyout rui-orig.key -config openssl.cfg

или для Windows:

openssl req -new -nodes -out rui.csr -keyout rui-orig.key -config openssl.cfg.txt

Теперь конвертируем ключ в RSA-формат следующей командой:

openssl rsa -in rui-orig.key -out rui.key

После того, как создан “запрос” должен быть сгенерирован непосредственно сам “ответ”, то есть ответная составляющая сертификата.

Для коммерческих центров сертифицирования:
Созданный запрос необходимо направить в центр сертифицирования (CA) и полученный ответный ключ установить на сервер vCenter Server.

Для центра сертифицирования Microsoft:
Обратите внимание, что для Windows Server 2003 CA требуется версия Enterprise, так как другие редакции не имеют шаблонов для экспорта SSL-сертификатов.

1. Откройте в веб-интерфейс центра сертифицирования Microsoft ( Microsoft CA certificate authority web interface). По умолчанию: http://servername/CertSrv/

2. Перейдите: Request a certificate > advanced certificate request.

3. Нажмите Submit a certificate request by using a base-64-encoded CMC or PKCS #10 file, или submit a renewal request by using a base-64-encoded PKCS #7 file.

4. Используя текстовый редактор скопируйте контент:

-----BEGIN CERTIFICATE REQUEST-----
...
-----END CERTIFICATE REQUEST-----

5. Далее следуйте:

Web Server > Submit > Base 64 encoded > Download Certificate

Сохраните созданный сертификат rui.crt и перейдите к этапу его установки.

Для самоподписанных (self-signed) сертификатов:
Следующая команда создаст сертификат с помощью OpenSSL:

openssl req -x509 -sha256 -newkey rsa:2048 -keyout rui.key -config openssl.cfg -out rui.crt -days 3650

Установка подписанных сертификатов для хоста ESXi.

  1. Подключитесь к хосту ESXi используя vSphere Client и переведите хост в Maintance Mode (не обязательно).
  2. Включите доступ по SSH к вашему хосту используя vSphere, или по нажатию F2 в Direct Console User Interface (DCUI): Troubleshooting options > Enable SSH.
  3. Подключитесь к хосту по SSH, перейдите в папку /etc/vmware/ssl и создайте бэкап сертификатов, как было описано выше.
  4. Скопируйте в эту директорию созданные rui.crt и rui.key в ASCII-формате. Откройте в текстовом редакторе vi и убедитесь, что нет посторонних символов (никаких ошибочных символов ^M в конце строк быть не должно). Для загрузки сертификатов в Windows можно использовать WinSCP.
  5. В DCUI выберите: Troubleshooting Options > Restart Management Agents. Нажмите F11 и по необходимости выведите хост из Maintenance Mode.

По завершению хост будет готов для присоединения к кластеру, однако потребуется выполнить следующие шаги для каждого из хостов, где требовалось сменить сертификат:

  1. Войдите в vCenter Server, переведите хост в Maintance Mode и правым кликом на хосте выберите Disconnect.
  2. Удалите отсоединенный хост из кластера, по правому клику выберите Connect и добавьте заново хост в кластер.