SSL-сертификат на LiteSpeed и OpenLiteSpeed через acme.sh (ACME)
ПечатьНа 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 и войдите.
- Перейдите в Listeners и добавьте новый листенер: имя, например
HTTPS, IP Address ANY, Port 443, Secure Yes. Сохраните. - Откройте созданный листенер и вкладку 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. Сохраните. - На вкладке Virtual Host Mappings добавьте свой виртуальный хост и домены
example.com, www.example.com. - Нажмите 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.