Всем привет!
Все кто используют продукты vmware, знают или не знаю, что проблема с сертификатами может принести много боли и страдания. Поэтому чтобы нам не наступить на эти грабли я покажу как сделать и поменять сертификаты для таких продуктов как:
Для этого нам понадобятся:
Подготовка сертификатов, я буду использовать рядовой windows server 2019 с ролью Служба сертификатов Active Directory и openssl v1.1.1h
Скачать можно тут
Я буду использовать локальный сервер выдачи сертификатов, но данный способ подойдет для выпуска сертификатов и на коммерческих площадках.
Подготовим запросы к центру сертификации.
Я дал имена типа FQDN:
Для этих имен будем готовить запросы и закрытые ключи в программе openssl. Для этого изготовим небольшой конфигурационный файл vc.cfg с содержимым. Далее для каждого нового сервера я буду менять содержимое этого файла подставляя имена серверов и ip адреса:
Далее используем openssl
1.1 Делаем vc.home.local
1.2 Меняем имена и ip сервера в vc.cfg и выпускаем ключ и запрос для vr.home.local
1.3 Меняем имена и ip сервера в vc.cfg и выпускаем ключ и запрос для srm.home.local
1.4 Дополнительно понадобятся сертификаты для служб vcenter (vpxd, vsphere-webclient, vpxd-extension)
делаем их командой:
Мы попадем в небольшой визард, там мы введем информацию о себе или о компании. Обязательно в поле «Common Name» мы пишем имя службы. Повторяем процедуру для оставшихся служб. На выходе у нас получается закрытый ключ и запрос на сертификат.
Теперь все запросы и ключи готовы приступим к выдаче сертификата. Переходим в центр выдачи сертификатов. Запускаем консоль Центр сертификации.
Далее нажимаем правой кнопкой мышки (пкм) на корне сервера и выбираем выдать новый запрос.
Выбираем наш файл запроса, с расширением req.
Переходим в меню Запросы в ожидании. Если у вас там пусто, нажмите F5 и обновиться окно. Далее жмем пкм, и выбираем Выдать:
Далее переходим в меню Выданные сертификаты и открываем наш сертификат.
Далее нам нужно сохранить его на диск. Для этого переходим во вкладку Состав и нажимаем кнопку Копировать в файл. Далее появиться визард для сохранения файлы, нам нужно выбрать Base64 и имя файла в данном случае vpxd.crt:
Сохранение сертификата.
Повторяем процедуру выдачи для всех наших сертификатов/
Нам еще понадобится корневой сертификат. Для этого откроем любой сертификат, перейдем во вкладку Путь сертификации выберем наш корневой сертификат и нажмем кнопку Посмотреть сертификат. Далее также его сохраним как и все предыдущие.
И это еще не все для сервера VMware Replication Server и VMware Site Recovery Manager. Нам понадобиться контейнер сертификата и ключа. pfx файл, сделать его очень легко, нам понадобиться закрытый ключи и файл сертификата:
OpenSSL попросить задать пароль, придумываем пароль и на выходе получаем заветный файл.
На этом создание сертификатов закончим перейдем к их установке.
Для этого мы заходим в раздел администрирования, и переходим в раздел сертификаты. Логинимся администратором.
Раздел для управления сертификатами.
Далее попав в панель управления первым делом добавим корневой сертификат или Trusted Root Certificates. Прокручиваем в самый конец и жмем ADD. Выбираем наш сертификат ca.crt
Add Trusted Root Certificates
Далее меняем текущие сертификаты через пункт меню Replace:
Выбираем сертификаты которые мы создали для vcenter:
Для служб мы выбираем сертификаты служб созданных в пункте 1.4
Для сертификатов __MACHINE_CERT и machine сертификат vc.home.local, созданный в пункте 1.1
Мы заменили все сертификаты, которые нам доступны из панели управления. Если у вас
конфигурация, в которой отсутствую компоненты VMware Replication Server и VMware Site Recovery Manager, то на этом можно поставить точку и после перезагрузки сервера наслаждаться работой VCentre. Если вы используете автономный сервер по выдаче сертификатов, советую делать сертификаты на 10 лет и более. Если вы покупаете то тут смотреть по обстоятельствам.
Для корректного опознавания вашими браузерами сертификатов, необходимо корневой сертификат установить в хранилище сертификатов операционной системы.
Начнем с того что на сервер vr необходимо установить корневой сертификат, т.к в штатном веб интерфейсе его нет. Для этого нам нужно зайти на сервер по ssh, но по умолчанию он выключен. Давай включим его. Открываем консоль виртуальной машины и логинимся рутом.
Активируем сервер ssh.
После этого можно подключиться к серверу через putty.
Все root ca сертификаты лежать в контейнере jks по пути /opt/vmware/hms/security/hms-truststore.jks
Но контейнер имеет пароль, давайте узнаем его командой:
Далее на сервер сохраняем наш ca.crt, я обычно это делаю через текстовые редакторы, на локальном компьютере открываю сертификат блокнотом копирую в буфер обмена, на удаленной машине с помощью редактора vi вставляю и сохраняю. После этого мы можем наш сертификат записать в контейнер командой:
Далее на запрос добавления говорим yes. Все, мы успешно добавили наш корневой сертификат.
Заходим в панель управления сервером по адресу vr.home.local:5480
Переходим во вкладку Configuration, поле Upload PKCS12 (*.pfx) file
выбираем наш pfx файл. жмем upload and install
конфигурация vr сервера.
После рестарта веб сервера и логина, пытаемся сохранить конфигурацию кнопкой Save and Restart Service:
И получаем ошибку:
Сервер нам говорит что отпечатки сертификатов служб вцентра не совпадают.
Открываем putty и подключаемся к нашему вцентру vc.home.local
Запускаем bash командой shell:
Переходим в каталог:
И смотрим состояние данной службы:
Если открыть в текстовом редакторе наш сертификат vc.home.local.crt, и сравнить, то окажется что сертификаты разные. Дело в том что веб интерфейс вцентра меняет не все сертификаты.
Копируем содержимое сертификата в фаил /tmp/old.crt, не забываем что содержимое сертификата должно быть между тегов -----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----
Должно получиться вот так:
Теперь открываем в текстовом редакторе наш новый сертификат вцентра vc.home.local.crt
и копируем его на vc в фаил /tmp/new.crt
Далее выясняем хэш sha1 файла /tmp/old.crt, он там понадобиться чтобы заменить старые сертификаты на новый.
Далее запускаем скрипт по замене:
В конце работы скрипта в отчете будет количество замененных сертификатов.
После этого переходим на vr.home.local:5480 и сохраняем конфигурацию. Если вы сделали все правильно сервер должен успешно сохранить конфигурацию и запустить службу vr сервера.
На этом сервере все делается из веб интерфейса в меню Certificate.
Заходим в административную панель srm.home.local:5480
На этом мы закончили смену всех сертификатов.
Всем спасибо!
Все кто используют продукты vmware, знают или не знаю, что проблема с сертификатами может принести много боли и страдания. Поэтому чтобы нам не наступить на эти грабли я покажу как сделать и поменять сертификаты для таких продуктов как:
- VMware Vcenter Server 6.7
- VMware Replication Server 8.3
- VMware Site Recovery Manager 8.3
Для этого нам понадобятся:
- Сертификаты
- Putty
- Немного терпения
Подготовка сертификатов, я буду использовать рядовой windows server 2019 с ролью Служба сертификатов Active Directory и openssl v1.1.1h
Скачать можно тут
1. Создание сертификатов
Я буду использовать локальный сервер выдачи сертификатов, но данный способ подойдет для выпуска сертификатов и на коммерческих площадках.
Подготовим запросы к центру сертификации.
Я дал имена типа FQDN:
- Vcenter Server имеет имя vc.home.local и ip 192.168.233.11
- VMware Replication Server я назвал как vr.home.local и ip 192.168.233.12
- VMware Site Recovery Manage также srm.home.local и ip 192.168.233.13
Для этих имен будем готовить запросы и закрытые ключи в программе openssl. Для этого изготовим небольшой конфигурационный файл vc.cfg с содержимым. Далее для каждого нового сервера я буду менять содержимое этого файла подставляя имена серверов и ip адреса:
[req]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
countryName = RU
stateOrProvinceName = RO
localityName = RnD
organizationName = HOME
commonName = vc.home.local (меняем)
emailAddress = root@home.local
[v3_req]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment, keyAgreement
subjectAltName = @alt_names
[alt_names]
DNS.1 = vc.home.local (меняем)
IP.2 = 192.168.233.11 (меняем)
Далее используем openssl
1.1 Делаем vc.home.local
openssl req -batch -new -newkey rsa:2048 -nodes -keyout vc.home.local.key -out vc.home.local.req -config vc.cfg
1.2 Меняем имена и ip сервера в vc.cfg и выпускаем ключ и запрос для vr.home.local
openssl req -batch -new -newkey rsa:2048 -nodes -keyout vr.home.local.key -out vr.home.local.req -config vc.cfg
1.3 Меняем имена и ip сервера в vc.cfg и выпускаем ключ и запрос для srm.home.local
openssl req -batch -new -newkey rsa:2048 -nodes -keyout srm.home.local.key -out srm.home.local.req -config vc.cfg
1.4 Дополнительно понадобятся сертификаты для служб vcenter (vpxd, vsphere-webclient, vpxd-extension)
делаем их командой:
openssl req -new -newkey rsa:2048 -nodes -keyout vpxd.key -out vpxd.req
Мы попадем в небольшой визард, там мы введем информацию о себе или о компании. Обязательно в поле «Common Name» мы пишем имя службы. Повторяем процедуру для оставшихся служб. На выходе у нас получается закрытый ключ и запрос на сертификат.
Генерация ключа и запроса на сертификат
Теперь все запросы и ключи готовы приступим к выдаче сертификата. Переходим в центр выдачи сертификатов. Запускаем консоль Центр сертификации.
Далее нажимаем правой кнопкой мышки (пкм) на корне сервера и выбираем выдать новый запрос.
Выбираем наш файл запроса, с расширением req.
Переходим в меню Запросы в ожидании. Если у вас там пусто, нажмите F5 и обновиться окно. Далее жмем пкм, и выбираем Выдать:
Далее переходим в меню Выданные сертификаты и открываем наш сертификат.
Далее нам нужно сохранить его на диск. Для этого переходим во вкладку Состав и нажимаем кнопку Копировать в файл. Далее появиться визард для сохранения файлы, нам нужно выбрать Base64 и имя файла в данном случае vpxd.crt:
Сохранение сертификата.
Повторяем процедуру выдачи для всех наших сертификатов/
Нам еще понадобится корневой сертификат. Для этого откроем любой сертификат, перейдем во вкладку Путь сертификации выберем наш корневой сертификат и нажмем кнопку Посмотреть сертификат. Далее также его сохраним как и все предыдущие.
И это еще не все для сервера VMware Replication Server и VMware Site Recovery Manager. Нам понадобиться контейнер сертификата и ключа. pfx файл, сделать его очень легко, нам понадобиться закрытый ключи и файл сертификата:
openssl pkcs12 -export -out vr.home.local.pfx -inkey vr.home.local.key -in vr.home.local.crt
OpenSSL попросить задать пароль, придумываем пароль и на выходе получаем заветный файл.
На этом создание сертификатов закончим перейдем к их установке.
2. Начнем менять с Vcenter
Для этого мы заходим в раздел администрирования, и переходим в раздел сертификаты. Логинимся администратором.
Раздел для управления сертификатами.
Далее попав в панель управления первым делом добавим корневой сертификат или Trusted Root Certificates. Прокручиваем в самый конец и жмем ADD. Выбираем наш сертификат ca.crt
Add Trusted Root Certificates
Далее меняем текущие сертификаты через пункт меню Replace:
Выбираем сертификаты которые мы создали для vcenter:
Для служб мы выбираем сертификаты служб созданных в пункте 1.4
Для сертификатов __MACHINE_CERT и machine сертификат vc.home.local, созданный в пункте 1.1
Мы заменили все сертификаты, которые нам доступны из панели управления. Если у вас
конфигурация, в которой отсутствую компоненты VMware Replication Server и VMware Site Recovery Manager, то на этом можно поставить точку и после перезагрузки сервера наслаждаться работой VCentre. Если вы используете автономный сервер по выдаче сертификатов, советую делать сертификаты на 10 лет и более. Если вы покупаете то тут смотреть по обстоятельствам.
Для корректного опознавания вашими браузерами сертификатов, необходимо корневой сертификат установить в хранилище сертификатов операционной системы.
3. Меняем сертификат на сервере VMware Replication Server
Начнем с того что на сервер vr необходимо установить корневой сертификат, т.к в штатном веб интерфейсе его нет. Для этого нам нужно зайти на сервер по ssh, но по умолчанию он выключен. Давай включим его. Открываем консоль виртуальной машины и логинимся рутом.
Активируем сервер ssh.
/usr/bin/enable-sshd.sh
После этого можно подключиться к серверу через putty.
Все root ca сертификаты лежать в контейнере jks по пути /opt/vmware/hms/security/hms-truststore.jks
Но контейнер имеет пароль, давайте узнаем его командой:
/opt/vmware/hms/bin/hms-configtool -cmd list | grep keystore
Далее на сервер сохраняем наш ca.crt, я обычно это делаю через текстовые редакторы, на локальном компьютере открываю сертификат блокнотом копирую в буфер обмена, на удаленной машине с помощью редактора vi вставляю и сохраняю. После этого мы можем наш сертификат записать в контейнер командой:
/usr/java/default/bin/keytool -import -trustcacerts -alias root -file /root/ca.crt -keystore /opt/vmware/hms/security/hms-truststore.jks -storepass тут пароль который мы узнали
Далее на запрос добавления говорим yes. Все, мы успешно добавили наш корневой сертификат.
Заходим в панель управления сервером по адресу vr.home.local:5480
Переходим во вкладку Configuration, поле Upload PKCS12 (*.pfx) file
выбираем наш pfx файл. жмем upload and install
конфигурация vr сервера.
После рестарта веб сервера и логина, пытаемся сохранить конфигурацию кнопкой Save and Restart Service:
И получаем ошибку:
Unhandled exception com.vmware.vim.vmomi.client.exception.SslException: javax.net.ssl.SSLException: Certificate thumbprint mismatch, expected:
Сервер нам говорит что отпечатки сертификатов служб вцентра не совпадают.
Открываем putty и подключаемся к нашему вцентру vc.home.local
Запускаем bash командой shell:
Переходим в каталог:
cd /usr/lib/vmidentity/tools/scripts/
И смотрим состояние данной службы:
./lstool.py list --url https://localhost/lookupservice/sdk --no-check-cert --ep-type com.vmware.cis.cs.identity.sso 2>/dev/null
Если открыть в текстовом редакторе наш сертификат vc.home.local.crt, и сравнить, то окажется что сертификаты разные. Дело в том что веб интерфейс вцентра меняет не все сертификаты.
Копируем содержимое сертификата в фаил /tmp/old.crt, не забываем что содержимое сертификата должно быть между тегов -----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----
Должно получиться вот так:
Теперь открываем в текстовом редакторе наш новый сертификат вцентра vc.home.local.crt
и копируем его на vc в фаил /tmp/new.crt
Далее выясняем хэш sha1 файла /tmp/old.crt, он там понадобиться чтобы заменить старые сертификаты на новый.
openssl x509 -in /tmp/old.crt -noout -fingerprint -sha1
Далее запускаем скрипт по замене:
./ls_update_certs.py --url https://vc.home.local/lookupservice/sdk --fingerprint 86:0D:BB:---ВАШ ХЭШ----:C7:0E:D1:3E:17:39 --certfile /tmp/new.crt --user administrator@home.local --password ВашПароль
В конце работы скрипта в отчете будет количество замененных сертификатов.
После этого переходим на vr.home.local:5480 и сохраняем конфигурацию. Если вы сделали все правильно сервер должен успешно сохранить конфигурацию и запустить службу vr сервера.
3. Замена сертификата на VMware Site Recovery Manage
На этом сервере все делается из веб интерфейса в меню Certificate.
Заходим в административную панель srm.home.local:5480
- Добавляем наш root ca кнопкой ADD
- Меняем текущий сертификат кнопкой CHANGE
На этом мы закончили смену всех сертификатов.
Всем спасибо!