hostprofi.ru
Подобрать хостинг
Термин·буква A

acme.sh

краткое определение

acme.sh — UNIX-shell скрипт для автоматического получения и обновления SSL/TLS-сертификатов через протокол ACME. Работает без зависимостей, кроме bash и curl. Поддерживает Let's Encrypt, ZeroSSL, Buypass и другие ACME-совместимые CA.

acme.sh — открытый bash-скрипт (~3000 строк), реализующий клиент протокола ACME (Automated Certificate Management Environment, RFC 8555). Создан Нилом Пэном (neil) в 2015 году. Основная альтернатива certbot от EFF с более низкими системными требованиями: работает на любом UNIX с bash и curl без Python.

Как работает

acme.sh получает сертификат через три метода верификации:

  • Webroot — помещает файл-токен в директорию веб-сервера.
  • Standalone — запускает временный веб-сервер на порту 80.
  • DNS API — автоматически добавляет TXT-запись через API регистратора (поддерживается 150+ DNS-провайдеров). Обязателен для Wildcard-сертификатов.

После получения сертификата скрипт устанавливает cron-задачу для автоматического обновления (по умолчанию каждые 60 дней для Let's Encrypt с 90-дневным сроком).

Поддерживаемые CA

  • Let's Encrypt (по умолчанию)
  • ZeroSSL — бесплатный альтернативный CA
  • Buypass Go SSL
  • SSL.com
  • Любой ACME-совместимый CA

История

acme.sh создан в 2015 году параллельно с запуском Let's Encrypt. В 2016 году ACME стандартизирован в RFC 8555. acme.sh стал популярен благодаря минимализму: никаких pip, virtualenv, systemd. К 2024 году у репозитория на GitHub более 38 000 звёзд, что делает его одним из наиболее используемых ACME-клиентов.

Связь с хостингом

На серверах с нестандартной конфигурацией (не Ubuntu с apt) acme.sh проще установить, чем certbot. DNS-режим позволяет выпускать Wildcard-сертификаты (*.example.com) для Nginx или Apache без перезагрузки веб-сервера. Пример использования для Nginx:

acme.sh --issue -d example.com -d www.example.com --nginx
acme.sh --install-cert -d example.com --key-file /etc/nginx/ssl/key.pem --fullchain-file /etc/nginx/ssl/cert.pem --reloadcmd "systemctl reload nginx"

acme.sh в практике

acme.sh — shell-скрипт (~2000 строк bash), реализующий ACME-протокол для автоматического получения SSL-сертификатов. Особенности: работает без зависимостей (только bash, openssl, curl), поддерживает 150+ DNS-провайдеров для DNS-01 challenge (включая reg.ru, Cloudflare, Yandex Cloud), автоматически устанавливает cron-задачу для продления. Пример получения сертификата: acme.sh --issue -d example.com --webroot /var/www/html. Для Wildcard-сертификатов нужен DNS-01: acme.sh --issue -d "*.example.com" --dns dns_cf (через Cloudflare API).

acme.sh vs Certbot

Certbot -- официальный клиент EFF для Let's Encrypt, написан на Python. acme.sh -- более портативный bash-скрипт без зависимостей от Python. Certbot лучше интегрируется с Nginx/Apache через плагины (автоматически правит конфиги), acme.sh -- более гибкий для нестандартных конфигураций и DNS API. Оба поддерживают ZeroSSL и Let's Encrypt как CA. На серверах без пакетного менеджера или с минимальной установкой acme.sh предпочтительнее. DV-сертификаты через оба инструмента получаются за 1--2 минуты.

История acme.sh

acme.sh создал Neil Pang (neilpang на GitHub) в 2015 году, когда Let's Encrypt только запустился. Первоначально назывался le.sh. Переименован в acme.sh в 2016 году. Сегодня имеет более 35 000 звёзд на GitHub и является одним из самых популярных ACME-клиентов в мире. Поддерживает ACME v1 (устаревший) и v2 (RFC 8555, 2019). Официально рекомендован несколькими CA как альтернативный клиент.

Другие термины