Перейти к основному содержанию

vCenter — продлеваем STS сертификаты

VMware

В vCenter есть проблема с истечением срока действия STS сертификата. Я уже натыкался на неё, но у меня проблема была шире, там вообще все сертификаты протухли.

Как я vCenter чинил

Сертификат используется для выпуска SAML-токенов, от него зависит аутентификация всех сервисов внутри vCenter. Если сертификат истекает, перестаёт работать всё.

Раньше сертификат генерировался на 10 лет, этого хватало. 1 марта 2018 г. CA/Browser Forum, отраслевая организация, состоящая из центров сертификации (CA), веб-браузеров и операционных систем, приняла бюллетень 193, чтобы сократить максимальный срок действия сертификатов SSL/TLS до двух лет (825 дней, если быть точным). Все организации бросились исполнять, включая VMware, и заменять сроки действия сертификатов везде где только можно. И где нельзя. В результате, в vCenter сертификат STS тоже стал жить два года, хотя он самоподписанный. Изначально механизм замены этого сертификата не был предусмотрен.

Когда сертификат истекает, получаем ошибку "Signing certificate is not valid" в VCSA 6.5, 6.7, 7.0 и даже в 8.0.

Для решения этого вопроса была выпущена инструкция:

https://kb.vmware.com/s/article/76719

Для исправления нам нужен скрипт fixsts.sh, который приложен к инструкции, я добавил его в Сборку для VMware.

Забегаю вперёд. Со временем выяснилось, что скрипт исправляет не все проблемы. Рекомендуют использовать в certool недокументированный ключ --genCIScert, который автоматически добавляет сертификат в Certificate Store. Не долго думая я добавил это исправление в fixsts и сохранил как fixstsCIS.sh в той же сборке.

В vCenter Server 7.0 можно продлить срок действия STS до срока действия VMCA в Administration → Certificate Management → Refresh with vCenter Certificate. В vCenter 6.7 и 6.5 так не получится. Если STS сертификат ещё не истёк, то посмотреть его можно в версии Flash.

Запускаем Flash Player после окончания поддержки

Administration → Single Sign-On → Configuration → Certificates → STS Signing.

vcenter

У меня в примере со сроком действия сертификата STS всё в порядке, но это тестовый стенд, давайте обновим STS сертификат.

Делаем снапшот сервера!

Загружаем скрипт fixsts.sh в папку /tmp в vCenter. Если WinSCP ругается, то:

chsh -s /bin/bash

Я не заморачиваюсь, просто перекидываю содержимое скрипта через vi.

Даём права на исполнение.

cd /tmp
chmod +x fixsts.sh

vcenter

Запускаем скрипт.

./fixsts.sh

vcenter

Понадобится пароль учётной записи administrator@vsphere.local.

vcenter

Скрипт отработал, перезапускаем службы.

service-control --stop --all && service-control --start --all

Всё.

vcenter

Сертификат выпустился на 2 года.

Срок действия сертификата не может превышать срок машинного сертификата. Если машинный сертификат истекает, он будет тоже перевыпущен.

 

Похожие материалы