bg-tutorials

Как установить SSL-сертификат ACME на Plesk

Если Вы управляете веб-сайтами на Plesk, Вам больше незачем работать с сертификатами вручную. При правильной настройке Вы можете автоматизировать выдачу, продление и установку SSL-сертификатов, используя протокол ACME с привязкой к внешнему аккаунту (EAB).

Plesk ACME SSL

В этом руководстве Вы узнаете, как установить SSL-сертификат ACME на Plesk (на базе Linux) с помощью ACME.sh— легкого клиента ACME, который отлично работает с Plesk.

Если Вы работаете на виртуальном хостинге, возможно, Вам не удастся воспользоваться этим методом. Большинство виртуальных сред не позволяют использовать root-доступ или пользовательские скрипты. Это руководство подходит для VPS и выделенных серверов, где Вы контролируете стек хостинга.


Прежде чем начать

Прежде чем приступать к выполнению шагов, убедитесь, что у Вас готово следующее:

  • Сервер или VPS с Plesk Obsidian
  • SSH-доступ к серверу. Либо root, либо пользователь с привилегиями sudo.
  • Живой домен, указывающий на сервер через запись A или AAAA
  • Порт 80 открыт и доступен публично (требуется для проверки HTTP-01).
  • Ваши учетные данные EAB, полученные от провайдера SSL (EAB KID и EAB HMAC Key).

Конечные точки ACME для использования:

  • Sectigo: https://acme.sectigo.com/v2/DV
  • DigiCert: https://acme.digicert.com/v2/acme

Шаг 1: Проверьте корень документа Вашего сайта в Plesk

Вам понадобится путь к корневой папке Вашего сайта, чтобы ACME.sh мог правильно разместить файлы проверки.

  1. Войдите в Plesk
  2. Перейдите в раздел Веб-сайты и домены > yourdomain.com > Настройки хостинга.
  3. Скопируйте значение корня документа. Оно выглядит как: /var/www/vhosts/yourdomain.com/httpdocs
  4. Держите этот путь под рукой, он пригодится Вам в последующих шагах.

Шаг 2: Включите SSH-доступ (если необходимо)

Если в Вашем хостинг-плане не включен SSH:

  1. Перейти к разделу Веб-сайты и домены > yourdomain.com > Доступ к веб-хостингу
  2. В разделе Доступ к серверу по SSH выберите /bin/bash или /usr/bin/bash
  3. Сохраните настройки

Если Вы находитесь на управляемом/общем хосте, обратитесь в службу поддержки, чтобы запросить доступ по SSH.


Шаг 3: Подключитесь к Вашему серверу через SSH

С локального терминала подключитесь к серверу:

ssh [email protected]

Или, если Вы используете не root-пользователя:

ssh [email protected]

Шаг 4: Установите ACME.sh

Запустите официальную программу установки:

curl https://get.acme.sh | sh
source ~/.bashrc

Затем проверьте версию, чтобы убедиться, что она установлена:

acme.sh --version

Если это не удается, убедитесь, что установлены curl и git . При необходимости Вы можете повторить установку с --force.


Шаг 5: Зарегистрируйте свою учетную запись в EAB

Регистрация ACME — это одноразовая настройка, которая связывает Ваш сервер с центром сертификации, так что будущие запросы на сертификаты будут проверяться и обрабатываться автоматически.

Эта команда регистрирует Вашу учетную запись ACME у провайдера SSL(Sectigo или DigiCert), используя Ваши уникальные учетные данные EAB.

acme.sh --register-account \
  --server https://acme.sectigo.com/v2/DV \
  --eab-kid YOUR_EAB_KID \
  --eab-hmac-key YOUR_EAB_HMAC_KEY \
  --accountemail [email protected]

Вот что означает каждая часть:

  • acme.sh --register-account — Запускает регистрацию учетной записи ACME
  • --server — URL ACME Вашего провайдера (Sectigo или DigiCert)
  • --eab-kid — Ваш идентификатор ключа EAB, полученный от провайдера
  • --eab-hmac-key — Ваш секретный ключ EAB HMAC (длинная строка)
  • --accountemail — Ваш контактный адрес электронной почты для учетной записи ACME

Эта команда должна быть настроена с учетом Ваших настоящих данных EAB и адреса электронной почты. Не копируйте ее как есть.

Если Вы оставите в тексте такие символы, как YOUR_EAB_KID, команда завершится неудачей с ошибкой аутентификации.

После успешного запуска Ваш сервер получает право запрашивать SSL-сертификаты у этого провайдера; в будущем нет необходимости регистрироваться снова, если только Вы не смените провайдера или учетные данные.


Шаг 6: Подготовка к проверке HTTP

Создайте каталог вызовов ACME:

mkdir -p /var/www/vhosts/yourdomain.com/httpdocs/.well-known/acme-challenge

Затем проверьте, работает ли это:

echo "ok" > /var/www/vhosts/yourdomain.com/httpdocs/.well-known/acme-challenge/testfile
curl -I http://yourdomain.com/.well-known/acme-challenge/testfile

Вы должны увидеть HTTP/1.1 200 OK. Если нет, проверьте правила брандмауэра, доступ к порту 80 или путь к корню документа.


Шаг 7: Обход принудительного HTTPS для ACME Path

Если Ваш сайт перенаправляет весь трафик на HTTPS, это нарушит проверку HTTP-01, если только Вы не разрешите папке challenge обойти ее.

Если Вы используете Apache (по умолчанию в Plesk Linux)

Отредактируйте Ваш файл .htaccess в корне документа и добавьте это в начало:

RewriteEngine On
RewriteRule ^.well-known/acme-challenge/ - [L]
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Если Вы используете Nginx (или Nginx работает с Apache)

Apache .htaccess здесь не поможет, потому что Nginx обрабатывает перенаправление первым. Вместо этого Вам нужно добавить пользовательскую директиву Nginx в Plesk:

  1. Перейдите в раздел Веб-сайты и домены > yourdomain.com > Настройки Apache и Nginx.
  2. Найдите поле с надписью Дополнительные директивы Nginx
  3. Вставьте это:
location ^~ /.well-known/acme-challenge/ {
root /var/www/vhosts/yourdomain.com/httpdocs;
allow all;
try_files $uri =404;
}

Это указывает Nginx обслуживать путь вызова напрямую, без HTTPS-перенаправления или проксирования на Apache. Сохраните и примените изменения.


Шаг 8: Выдача сертификата

Теперь Вы можете запросить сертификат. Вот пример с Sectigo и двумя вариантами доменов:

acme.sh --issue \
  -d yourdomain.com \
  -d www.yourdomain.com \
  -w /var/www/vhosts/yourdomain.com/httpdocs \
  --server https://acme.sectigo.com/v2/DV

Вы можете включить столько флагов -d, сколько необходимо. Как только сертификат будет выпущен, ACME.sh сохраняет все в этой папке: /root/.acme.sh/yourdomain.com/

Для Plesk Вам понадобятся следующие два файла:

  • yourdomain.com.key: это Ваш закрытый ключ
  • fullchain.cer: это файл Вашего сертификата, и он включает в себя полную цепочку (Ваш сертификат + цепочка ЦС)

Это файлы, которые Вы будете загружать или использовать в CLI для установки сертификата в Plesk.


Шаг 9: Импортируйте сертификат в Plesk через пользовательский интерфейс

  1. Перейти к разделу Веб-сайты и домены > yourdomain.com > Сертификаты SSL/TLS
  2. Нажмите Добавить сертификат SSL/TLS
  3. Загрузите сертификат (выберите fullchain.cer) и закрытый ключ (выберите yourdomain.com.key). Нажмите Сохранить
  4. Вернитесь в Настройки хостинга и выберите этот сертификат в разделе Поддержка SSL/TLS.
  5. Нажмите OK или Применить

Теперь Ваш домен использует сторонний сертификат ACME SSL.


Шаг 10: Автоматизируйте импорт с помощью Plesk CLI (необязательно, идеально подходит для Cron)

Чтобы автоматизировать применение cert в будущих обновлениях, используйте CLI:

plesk bin certificate -c "acme-yourdomain" \
  -domain yourdomain.com \
  -cert-file /root/.acme.sh/yourdomain.com/fullchain.cer \
  -key-file  /root/.acme.sh/yourdomain.com/yourdomain.com.key

plesk bin domain -u yourdomain.com -ssl true -certificate-name "acme-yourdomain"
plesk bin httpdmng --reconfigure-domain yourdomain.com

Если команда plesk не распознается, попробуйте указать полный путь: /usr/sbin/plesk bin …


Шаг 11: Автоматизируйте продление с помощью сценария развертывания

ACME.sh автоматически обновляет сертификаты за ~30 дней до истечения срока действия. Но мы сделаем крючок после обновления, чтобы автоматически применять их в Plesk.

1. Создайте сценарий развертывания

nano /usr/local/bin/plesk-acme-deploy.sh

Вставьте следующее:

#!/usr/bin/env bash
set -euo pipefail

DOMAIN="yourdomain.com"
CERT_DIR="/root/.acme.sh/${DOMAIN}"
CERT_NAME="acme-${DOMAIN}"

CERT_FILE="${CERT_DIR}/fullchain.cer"
KEY_FILE="${CERT_DIR}/${DOMAIN}.key"

/usr/sbin/plesk bin certificate -c "${CERT_NAME}" \
  -domain "${DOMAIN}" \
  -cert-file "${CERT_FILE}" \
  -key-file  "${KEY_FILE}"

/usr/sbin/plesk bin domain -u "${DOMAIN}" -ssl true -certificate-name "${CERT_NAME}"
/usr/sbin/plesk bin httpdmng --reconfigure-domain "${DOMAIN}"

echo "Plesk deploy complete for ${DOMAIN}"

2. Сохраните и сделайте его исполняемым

chmod +x /usr/local/bin/plesk-acme-deploy.sh

3. Свяжите его с файлом ACME.sh

acme.sh --install-cert -d yourdomain.com \
  --key-file       ~/.acme.sh/yourdomain.com/yourdomain.com.key \
  --fullchain-file ~/.acme.sh/yourdomain.com/fullchain.cer \
  --reloadcmd "/usr/local/bin/plesk-acme-deploy.sh"

С этого момента каждое обновление будет применяться к Plesk.


Шаг 12: Проверьте все

Посетите свой сайт по адресу https://yourdomain.com. Сертификат должен быть действительным и показывать Ваш ЦС.

Чтобы протестировать обновление и развертывание вручную, запустите его:

acme.sh --renew -d yourdomain.com --force

Затем заверните журнал в хвост:

tail -n 60 ~/.acme.sh/acme.sh.log

Вы должны увидеть успешное обновление и сообщение «Развертывание Plesk завершено» в конце.


Общие проблемы и устранение неисправностей

Даже при правильной настройке не всегда все проходит гладко с первой попытки, особенно при проверке домена, перенаправлениях или путях к файлам. Ниже перечислены наиболее распространенные проблемы, с которыми Вы можете столкнуться при выпуске или продлении сертификата, и способы их быстрого решения.

HTTP-проверка прошла неудачно (404, таймаут или testfile not found)

Это означает, что файл вызова ACME не обслуживается должным образом.

  • Дважды проверьте корень документа в Plesk > Hosting Settings.
  • Убедитесь, что порт 80 открыт и не заблокирован Вашим брандмауэром, хостинг-панелью или облачным провайдером.
  • Если у Вас есть перенаправление на HTTPS, убедитесь, что /.well-known/acme-challenge/ исключен, как показано ранее.

«Неавторизованный» или «недопустимый ответ» во время выдачи

Сервер ACME не смог проверить Ваш вызов, вероятно, по одной из следующих причин:

  • DNS-записи Вашего домена еще не обновлены (запись A или AAAA отсутствует или все еще распространяется).
  • Тестовый файл был недоступен, удален слишком рано или заблокирован правилом.
  • Вы используете CDN или WAF (например, Cloudflare), которые перехватывают HTTP-трафик. Временно приостановите проксирование или внесите путь ACME в белый список.

После обновления ничего не происходит

Сертификат обновляется, но не применяется в Plesk.

Убедитесь, что путь к Вашему сценарию развертывания указан правильно в параметре —reloadcmd.

Проверьте, что скрипт исполняется, запустив его:

chmod +x /usr/local/bin/plesk-acme-deploy.sh

Загляните в журнал ACME с:

tail -n 60 ~/.acme.sh/acme.sh.log

Ошибки будут отображаться там.

Не удается выполнить импорт Plesk CLI

Ваш сценарий развертывания может быть запущен, но сертификат не будет применяться.

  • Если команда plesk не найдена, попробуйте использовать полный путь: /usr/sbin/plesk
  • Дважды проверьте, что файлы.key и .cer действительно существуют и имеют правильные имена.
  • Чтобы принудительно изменить конфигурацию вручную, выполните команду:
plesk bin httpdmng --reconfigure-domain yourdomain.com

Финальные вроды

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

Сэкономьте 10% на SSL-сертификатах при заказе сегодня!

Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

Детальное изображение дракона в полете
Написано

Опытный автор контента, специализирующийся на SSL-сертификатах. Превращает сложные темы кибербезопасности в понятный, увлекательный контент. Вносите свой вклад в повышение уровня цифровой безопасности с помощью впечатляющих рассказов.