SSL-сертификаты · 6 min read · Feb 04, 2026
Начало работы с клиентом SSL Let's Encrypt acme.sh

Acme.sh — это простой, мощный и удобный клиент протокола ACME, написанный исключительно на языке Shell (Unix shell), совместимый с оболочками bash, dash и sh. Он помогает управлять установкой, продлением и аннулированием SSL-сертификатов. Он поддерживает протоколы ACME версии 1 и версии 2, а также сертификаты ACME v2 с подстановочными знаками. Будучи клиентом ACME без зависимостей, он становится еще лучше. Вам не нужно скачивать и устанавливать весь интернет, чтобы запустить его. Инструмент не требует прав root или sudo, но рекомендуется использовать root.
Acme.sh поддерживает следующие методы проверки, которые вы можете использовать для подтверждения владения доменом:
- Режим webroot
- Режим standalone
- Режим standalone tls-alpn
- Режим Apache
- Режим Nginx
- Режим DNS
- Режим DNS alias
- Stateless режим
Что такое Let’s Encrypt
Let’s Encrypt (LE) — это центр сертификации (CA), который предлагает бесплатные и автоматизированные SSL/TLS сертификаты с целью шифрования всего интернета. Если у вас есть доменное имя и доступ к вашему серверу через оболочку, вы можете использовать Let’s Encrypt для получения доверенного сертификата без каких-либо затрат. Let’s Encrypt может выдавать SAN сертификаты для до 100 имен хостов и сертификаты с подстановочными знаками. Все сертификаты действительны в течение 90 дней.
Использование acme.sh и основные команды
В этом разделе я покажу некоторые из самых распространенных команд и опций acme.sh.
Установка acme.sh
У вас есть несколько вариантов установки acme.sh.
Установить из интернета через curl или wget:
curl https://get.acme.sh | sh
source ~/.bashrcили
wget -O - https://get.acme.sh | sh
source ~/.bashrcУстановить из GitHub:
curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 shили
wget -O - https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 shКлонировать Git и установить:
git clone https://github.com/Neilpang/acme.sh.git
cd ./acme.sh
./acme.sh --install
source ~/.bashrcУстановщик выполнит 3 действия:
- Создаст и скопирует
acme.shв вашу домашнюю директорию ($HOME):~/.acme.sh/. Все сертификаты также будут помещены в эту папку. - Создаст псевдоним для:
acme.sh=~/.acme.sh/acme.sh. - Создаст ежедневную задачу cron для проверки и продления сертификатов при необходимости.
Расширенная установка:
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install \
--home ~/myacme \
--config-home ~/myacme/data \
--cert-home ~/mycerts \
--accountemail "[email protected]" \
--accountkey ~/myaccount.key \
--accountconf ~/myaccount.conf \
--useragent "this is my client."Вам не нужно устанавливать все параметры, просто установите те, которые вам важны.
Объяснение параметров:
--home— это пользовательская директория для установкиacme.sh. По умолчанию он устанавливается в~/.acme.sh.--config-home— это записываемая папка, acme.sh будет записывать все файлы (включая сертификаты/ключи, конфигурации) туда. По умолчанию это--home.--cert-home— это пользовательская директория для сохранения выданных сертификатов. По умолчанию они сохраняются в--config-home.--accountemail— это электронная почта, используемая для регистрации аккаунта в Let’s Encrypt, вы будете получать уведомления о продлении на этот адрес. По умолчанию пусто.--accountkey— это файл, в котором хранится ваш закрытый ключ аккаунта. По умолчанию он сохраняется в--config-home.--useragent— это значение заголовка user-agent, используемое для отправки в Let’s Encrypt.
После завершения установки вы можете проверить это, проверив версию acme.sh:
acme.sh --version
# v2.8.1Программа имеет множество команд и параметров, которые можно использовать. Чтобы получить помощь, вы можете выполнить:
acme.sh --helpВыдача SSL сертификата
Если у вас уже есть работающий веб-сервер, вам следует использовать режим webroot. Вам потребуется доступ на запись к корневой папке веб-сервера. Вот несколько примеров команд, которые можно использовать для получения сертификата через режим webroot:
Один домен + Режим webroot:
acme.sh --issue -d example.com --webroot /var/www/example.com Несколько доменов в одном сертификате + Режим webroot:
acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.comОдин домен ECC/ECDSA сертификат + Режим webroot:
acme.sh --issue -d example.com --webroot /var/www/example.com --keylength ec-256Несколько доменов в одном ECC/ECDSA сертификате + Режим webroot:
acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.com --keylength ec-256Допустимые значения для --keylength: 2048 (по умолчанию), 3072, 4096, 8192 или ec-256, ec-384.
Если у вас нет веб-сервера, возможно, вы находитесь на SMTP или FTP сервере, и порт 80 свободен, тогда вы можете использовать режим standalone. Если вы хотите использовать этот режим, вам сначала нужно установить инструменты socat.
Один домен + Режим standalone:
acme.sh --issue -d example.com --standalone Несколько доменов в одном сертификате + Режим standalone:
acme.sh --issue -d example.com -d www.example.com -d mail.example.com --standalone Если у вас нет веб-сервера, возможно, вы находитесь на SMTP или FTP сервере, и порт 443 свободен. Вы можете использовать режим standalone TLS ALPN. Acme.sh имеет встроенный standalone TLS веб-сервер, который может слушать на порту 443 для выдачи сертификата.
Один домен + Режим Standalone TLS ALPN:
acme.sh --issue -d example.com --alpnНесколько доменов в одном сертификате + Режим Standalone TLS ALPN:
acme.sh --issue -d example.com -d www.example.com --alpnАвтоматическая интеграция DNS API
Если ваш провайдер DNS имеет API, acme.sh может использовать API для автоматического добавления записи DNS TXT для вас. Ваш сертификат будет автоматически выдан и продлен. Не требуется ручная работа. Перед запросом сертификатов настройте свои API ключи и электронную почту. В настоящее время acme.sh имеет автоматическую интеграцию DNS примерно с 60 провайдерами DNS и может использовать инструмент Lexicon для тех, кто не поддерживается нативно.
Один домен + Режим CloudFlare DNS API:
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="[email protected]"
acme.sh --issue -d example.com --dns dns_cf Сертификат с подстановочным знаком + Режим CloudFlare DNS API:
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="[email protected]"
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cfЕсли ваш провайдер DNS не поддерживает доступ к API, вы можете добавить запись TXT вручную.
acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com Вы должны получить вывод, подобный следующему:
Add the following txt record:
Domain:_acme-challenge.example.com
Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c
Add the following txt record:
Domain:_acme-challenge.www.example.com
Txt value:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Please add those txt records to the domains. Waiting for the dns to take effect.Затем просто повторите с аргументом renew:
acme.sh --renew -d example.comИмейте в виду, что это режим ручного DNS, и вы не можете автоматически продлевать свои сертификаты. Вам придется вручную добавлять новую запись TXT в ваш домен, когда придет время продлевать сертификаты. Поэтому используйте режим DNS API, так как его можно автоматизировать.
Установка SSL сертификата Let’s Encrypt
После генерации сертификатов вы, вероятно, захотите установить/скопировать выданные сертификаты в правильное место на диске. Вы должны использовать эту команду для копирования сертификатов в целевые файлы, не используйте файлы сертификатов в папке ~/.acme.sh/, они предназначены только для внутреннего использования, структура папок может измениться в будущем. Перед установкой создайте разумную директорию для хранения ваших сертификатов. Это может быть /etc/letsencrypt, /etc/nginx/ssl или /etc/apache2/ssl, в зависимости от вашего веб-серверного программного обеспечения и ваших собственных предпочтений для хранения связанных с SSL данных.
Пример для Apache:
acme.sh --install-cert \
--domain example.com \
--cert-file /path/to/cert/cert.pem \
--key-file /path/to/keyfile/key.pem \
--fullchain-file /path/to/fullchain/fullchain.pem \
--reloadcmd "sudo systemctl reload apache2.service"Пример для Nginx:
acme.sh --install-cert \
--domain example.com \
--cert-file /path/to/cert/cert.pem \
--key-file /path/to/keyfile/key.pem \
--fullchain-file /path/to/fullchain/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"Параметры хранятся в конфигурационном файле .acme.sh, поэтому вам нужно правильно настроить его для вашей системы, так как этот файл читается, когда задача cron выполняет продление. “reloadcmd” зависит от вашей операционной системы и системы инициализации.
Продление SSL сертификатов Let’s Encrypt
Вам не нужно вручную продлевать сертификаты. Все сертификаты будут автоматически продлены каждые 60 дней.
Тем не менее, вы также можете принудительно продлить сертификат:
acme.sh --renew -d example.com --forceили для ECC сертификата:
acme.sh --renew -d example.com --force --eccКак обновить acme.sh
Вы можете обновить acme.sh до последнего кода с помощью:
acme.sh --upgradeВы также можете включить автоматическое обновление:
acme.sh --upgrade --auto-upgradeТогда acme.sh будет автоматически обновляться.
Вот и все. Если у вас возникли трудности, посетите страницу вики acme.sh по адресу https://github.com/Neilpang/acme.sh/wiki.
Ссылки
Get new posts in your inbox
No spam. Unsubscribe anytime.