SSL-сертификат ACME на хостинге cPanel через acme.sh
ПечатьНа хостинге 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.