SSL-сертификат ACME на хостинге cPanel через acme.sh

Печать
  • 0

На хостинге TopHost с cPanel подпиской Sectigo ACME можно пользоваться без root-доступа: клиент acme.sh работает внутри Вашего аккаунта, получает сертификат, устанавливает его в cPanel через API cPanel и сам продлевает его по заданию cron. Нужны только Terminal (или SSH) и данные ACME. Если Вас устраивает бесплатный сертификат, ничего устанавливать не нужно: этим занимается AutoSSL.

Что понадобится

  • Хостинг-аккаунт cPanel с доступом к Terminal или SSH. Если значка Terminal нет или SSH для аккаунта не включён, напишите нам в тикете.
  • Server URL, EAB MAC ID и EAB MAC Key из услуги Sectigo ACME Certificate-as-a-Service.
  • Домен уже открывается с нашего сервера по HTTP (его DNS указывает на хостинг-аккаунт).
  • Корневая папка домена. В cPanel откройте Domains в разделе Domains: она указана в колонке Document Root. Для основного домена это обычно /home/USERNAME/public_html, где USERNAME означает Ваш логин cPanel.

Шаг 1. Откройте терминал

В cPanel перейдите в раздел Advanced и нажмите Terminal. При первом запуске подтвердите предупреждение кнопкой I understand and want to proceed. Можно также подключиться с компьютера через SSH-клиент, как описано в статье о подключении к серверу по SSH.

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

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

acme.sh устанавливается в ~/.acme.sh/ и добавляет ежедневное задание в cron аккаунта. Если оболочка по-прежнему отвечает acme.sh: command not found, выйдите и зайдите снова или вызывайте программу по полному пути: ~/.acme.sh/acme.sh.

Шаг 3. Зарегистрируйте ACME-аккаунт

Выполняется один раз, со значениями из личного кабинета:

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

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

acme.sh --set-default-ca --server https://acme.sectigo.com/v2/DV

Шаг 4. Получите сертификат

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

Параметр -d указывается для каждого имени отдельно; все имена должны быть в списке доменов подписки. После -w идёт корневая папка со страницы Domains. acme.sh кладёт временный файл в .well-known/acme-challenge/ внутри этой папки, центр сертификации читает его по HTTP, а готовый сертификат сохраняется в ~/.acme.sh/.

Шаг 5. Установите его в cPanel

acme.sh --deploy -d example.com --deploy-hook cpanel_uapi

Хук cpanel_uapi устанавливает сертификат на домен через API cPanel, без ручного копирования. acme.sh запоминает хук, так что после каждого продления новый сертификат снова устанавливается автоматически.

Шаг 6. Проверьте результат

  • В cPanel откройте SSL/TLS, затем Manage SSL sites: у домена должен быть новый сертификат с указанием издателя и даты окончания. Кратко то же видно в SSL/TLS Status в разделе Security.
  • Откройте https://example.com в браузере и посмотрите сведения о сертификате, нажав на замок.

Как правило, AutoSSL не трогает действующий сертификат, установленный Вами; он вмешивается, только если сертификата нет, он недействителен или скоро истекает.

Продление

Ежедневное задание cron проверяет сертификаты и заранее продлевает их. Его видно в cPanel в разделе Cron Jobs (строка с acme.sh --cron); не удаляйте его. Полезные команды:

acme.sh --list
acme.sh --renew -d example.com --force

Первая выводит список сертификатов и дату следующего продления. Вторая сразу запускает принудительное продление: так удобно один раз проверить всю цепочку, но регулярно её запускать не нужно.

Если что-то не работает

  • Проверка завершается ошибкой 404. Путь в -w не является корневой папкой этого домена (частая ситуация с дополнительными доменами и поддоменами), или правило в .htaccess блокирует папку /.well-known/.
  • Проверка падает по таймауту или видит другой IP. Домен ещё не направлен на наш сервер. Проверьте NS-серверы или A-запись и дождитесь, пока изменение DNS станет видно.
  • Ошибки unauthorized или EAB при регистрации. EAB MAC ID или ключ скопированы не полностью, либо указан неверный адрес сервера.
  • Домен не найден или ещё не выпущен при запуске --deploy или --renew. Современные версии acme.sh по умолчанию создают ключи ECC; если команда не находит сертификат, добавьте к ней --ecc.
  • Шаг установки сообщает об ошибке. Запустите его ещё раз с параметром --debug и пришлите нам вывод в тикете, без EAB MAC Key.

Официальная документация acme.sh: github.com/acmesh-official/acme.sh/wiki.

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

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

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