SSL-сертификат на LiteSpeed и OpenLiteSpeed через acme.sh (ACME)

Печать
  • 0

На VPS или выделенном сервере с OpenLiteSpeed либо с отдельно установленным LiteSpeed Enterprise сертификат Sectigo по подписке ACME получают через acme.sh: файлы один раз прописываются в LiteSpeed, а дальше acme.sh сам продлевает сертификат и перезапускает веб-сервер. Ниже по шагам описано всё, от установки acme.sh до HTTPS-листенера в WebAdmin.

Инструкция не относится к тарифам WordPress Hosting и Business Hosting в TopHost: там LiteSpeed управляется через cPanel, бесплатный сертификат выдаёт AutoSSL, а сертификат ACME устанавливается по статье acme.sh на хостинге cPanel. То же касается LiteSpeed Enterprise под любой панелью управления: пользуйтесь SSL-инструментами панели.

Требования

  • Доступ root или sudo по SSH (см. статью о подключении по SSH).
  • A-запись домена и, если используется, AAAA указывают на сервер.
  • Для сайта есть виртуальный хост, который уже отвечает на порту 80.
  • В файрволе открыты порты 80 и 443. Порт WebAdmin 7080 оставьте доступным только со своего IP-адреса.
  • Server URL, EAB MAC ID и EAB MAC Key из услуги Sectigo ACME Certificate-as-a-Service.

Шаг 1. Установите acme.sh

curl https://get.acme.sh | sh -s email=admin@example.com
source ~/.bashrc
acme.sh --version

Если загрузка не удалась, установите curl (а также socat или cron, если их требует установщик) менеджером пакетов системы и повторите команду.

Шаг 2. Зарегистрируйтесь на ACME-сервере Sectigo

acme.sh --register-account \
  --server https://acme.sectigo.com/v2/DV \
  --eab-kid YOUR_EAB_MAC_ID \
  --eab-hmac-key YOUR_EAB_MAC_KEY \
  --accountemail admin@example.com

Это делается один раз на сервер. На адрес из --accountemail приходят уведомления об аккаунте.

Шаг 3. Узнайте корневую папку и выпустите сертификат

В WebAdmin откройте Virtual Hosts, выберите сайт и посмотрите Document Root на вкладке General. В чистом OpenLiteSpeed это /usr/local/lsws/Example/html, под CyberPanel обычно /home/example.com/public_html. Затем выполните:

acme.sh --issue --server https://acme.sectigo.com/v2/DV \
  -d example.com -d www.example.com \
  -w /home/example.com/public_html

Используйте именно режим webroot, а не standalone: в режиме standalone acme.sh пытается запустить собственный веб-сервер на порту 80, который уже занят LiteSpeed.

Шаг 4. Скопируйте сертификат в постоянное место

mkdir -p /usr/local/lsws/conf/cert/example.com
acme.sh --install-cert -d example.com \
  --key-file /usr/local/lsws/conf/cert/example.com/privkey.pem \
  --fullchain-file /usr/local/lsws/conf/cert/example.com/fullchain.pem \
  --reloadcmd "/usr/local/lsws/bin/lswsctrl restart"

acme.sh копирует ключ и полную цепочку в эту папку сейчас и после каждого продления, а затем выполняет команду перезагрузки. lswsctrl restart перезапускает сервер плавно, открытые соединения не обрываются. Не указывайте в LiteSpeed файлы прямо из ~/.acme.sh/: их расположение может меняться от версии к версии.

Шаг 5. Включите HTTPS в WebAdmin

Откройте WebAdmin по адресу https://SERVER_IP:7080 и войдите.

  1. Перейдите в Listeners и добавьте новый листенер: имя, например HTTPS, IP Address ANY, Port 443, Secure Yes. Сохраните.
  2. Откройте созданный листенер и вкладку SSL. В блоке SSL Private Key and Certificate укажите Private Key File /usr/local/lsws/conf/cert/example.com/privkey.pem, Certificate File /usr/local/lsws/conf/cert/example.com/fullchain.pem и для Chained Certificate выберите Yes. Сохраните.
  3. На вкладке Virtual Host Mappings добавьте свой виртуальный хост и домены example.com, www.example.com.
  4. Нажмите Graceful Restart.

Если на одном сервере несколько сайтов со своими сертификатами, оставьте один HTTPS-листенер, а ключ и сертификат укажите на вкладке SSL каждого виртуального хоста; LiteSpeed подберёт нужный сертификат по запрошенному имени.

CyberPanel сам пишет конфигурацию для сайтов, которыми управляет, и может заменить ручные правки в WebAdmin. При работе с CyberPanel после обновления панели или изменения сайта проверяйте, что пути к сертификату остались Вашими.

Шаг 6. Проверьте HTTPS и продление

  • Откройте https://example.com и посмотрите сертификат, нажав на замок: издатель, защищённые имена и дата окончания.
  • Выполните crontab -l: должна быть строка с acme.sh --cron, которая ежедневно проверяет сертификаты.
  • Команда acme.sh --list покажет сертификаты и дату следующего продления.
  • Чтобы один раз проверить всю цепочку (продление, копирование, перезапуск), выполните acme.sh --renew -d example.com --force.

Решение проблем

  • Таймаут при проверке. Порт 80 закрыт файрволом, или DNS-запись ещё указывает на другой сервер. Команда ss -tlnp | grep ':80 ' на сервере покажет, слушает ли LiteSpeed этот порт.
  • 404 для проверочного файла. Путь в -w не совпадает с корневой папкой этого виртуального хоста, или правило rewrite перенаправляет /.well-known/acme-challenge/.
  • unauthorized при регистрации. Проверьте EAB MAC ID, EAB MAC Key и адрес сервера, скопированные без пробелов.
  • Сайт показывает старый или стандартный сертификат. Листенер или виртуальный хост ссылается на другие файлы, домена нет в Virtual Host Mappings, или LiteSpeed не перезапущен.
  • Domain not found при запуске --renew или --install-cert. Добавьте --ecc: современные версии acme.sh по умолчанию выпускают сертификаты ECC.

На управляемом VPS TopHost эту настройку можно поручить нам. В остальных случаях, если что-то не получается, откройте тикет с командой и полным выводом, без EAB MAC Key.

Полезные статьи

Помог ли вам данный ответ?

Нужна помощь? Позвоните нам +373 795-800-80