Сертификат Let’s Encrypt для админки VestaCP вместо самоподписанного SSL сертификата

Опубликовано: 01.09.2018

С каждым днем браузеры все беспощадней относятся к незащищенным соединениям и самоподписным сертификатам. Если вы используете для управления хостингом панель управления VestaCP, то обратили внимание, что в последнее время подключение по IP адресу превращается в небольшой квест, и все это из-за самоподписного SSL сертификата.

Реакция браузера FireFox 58 на самоподписной сертификат VestaCP

Как известно последние версии VestaCP позволяют в автоматическом режиме получать и продлевать для доменов SSL сертификаты от Lets Encrypt. Насколько мне известно получить его для IP адреса нельзя, во всяком случае на момент написания статьи и именно в VestaCP от Lets Encrypt.

Поэтому напрашивается решение, чтобы не добавлять самоподписной SSL сертификат панели управления VestaCP в исключения в браузере, нужно обращаться к панели по доменному имени, например https://domainname.tld:8083 . Но если вы сделаете это, то все равно получите сообщение об ошибке, что ваше соединение не защищено.

Подключаем SSL сертификат Lets Encrypt к админке панели управления хостингом VestaCP

Причина в том, что панель работает как отдельный сервис на порту 8083 и у нее свой самоподписной сертификат. Если мы хотим запускать ее используя доменное имя, то для панели нужно прописать сертификат от домена.

Можно использовать любое доменное имя зарегистрированное в панели для которого есть актуальный SSL сертификат. Я обычно использую технический домен у пользователя Admin.

Чтобы все заработало как надо, выполните следующее:

Сначала сохраните старые сертификаты панели под новым именем (на всякий случай):

# mv /usr/local/vesta/ssl/certificate.crt /usr/local/vesta/ssl/certificate.crt.old # mv /usr/local/vesta/ssl/certificate.key /usr/local/vesta/ssl/certificate.key.old

Далее создайте жесткую ссылку на действующий SSL сертификат. Это позволит всегда использовать актуальный сертификат для панели.

# ln -s /home/ admin /conf/web/ssl. DomainName .crt /usr/local/vesta/ssl/certificate.crt # ln -s /home/ admin /conf/web/ssl. DomainName .key /usr/local/vesta/ssl/certificate.key

где admin — имя пользователя которому принадлежит домен с сертификатом, а DomainName — имя домена зарегистрированного в панели и для которого есть сертификат.

После этого перегрузите панель VestaCP:

# service vesta restart

Теперь зайдите в панель по имени домена, например https://domain name.tld:8083 и убедитесь, что все работает:

Если для получения SSL сертификатов вы используете Lets Encrypt, то с данным решением вам не придется каждые 90 дней вручную копировать сертификаты домена для панели, и уж тем более писать скрипт копирования и засовывать его в CRON. Этот способ заставляет панель считать сертификаты домена своими.

Благодарности

При написании статьи были использованы следующие источники:

ssl сертификат от LE для панели вместо самоподписаного Переходим на протокол HTTPS. SSL сертификаты VestaCP

Поделись этой страницей с друзьями!

rss