Начало работы с клиентом acme.sh Lets Encrypt SSL
На этой странице
- Что такое Lets Encrypt
- Использование Acme.sh и основные команды
- Установка Acme.sh
- Выдать SSL-сертификат
- Автоматическая интеграция API DNS
- Установить SSL-сертификат Lets Encrypt
- Обновить SSL-сертификаты Lets Encrypt
- Как обновить acme.sh
Acme.sh – это простой, мощный и удобный клиент протокола ACME, написанный исключительно на языке Shell (оболочка Unix), совместимый с оболочками bash, dash и sh. Он помогает управлять установкой, обновлением и отзывом SSL-сертификатов. Он поддерживает протоколы ACME версии 1 и ACME версии 2, а также подстановочные сертификаты ACME v2. Будучи клиентом ACME с нулевой зависимостью, он становится еще лучше. Вам не нужно загружать и устанавливать весь Интернет, чтобы он работал. Инструмент не требует доступа root или sudo, но рекомендуется использовать root.
Acme.sh поддерживает следующие методы проверки, которые можно использовать для подтверждения владения доменом:
- Режим веб-рута
- Автономный режим
- Автономный режим tls-alpn
- Режим Apache
- Режим Nginx
- Режим DNS
- Режим DNS-псевдонима
- Режим без сохранения состояния
Что такое Lets Encrypt
Let’s Encrypt (LE) — это центр сертификации (ЦС), который предлагает бесплатные и автоматизированные сертификаты SSL/TLS с целью шифрования всей сети. Если у вас есть доменное имя и доступ к серверу через оболочку, вы можете использовать Lets Encrypt для бесплатного получения доверенного сертификата. Lets 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 "" \
--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
— это адрес электронной почты, используемый для регистрации учетной записи в Lets Encrypt. Здесь вы получите электронное письмо с уведомлением о продлении. По умолчанию пусто.--accountkey
— это файл, в котором хранится закрытый ключ вашей учетной записи. По умолчанию он сохраняется в--config-home
.--useragent
— это значение заголовка пользовательского агента, используемое для отправки в Lets 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 свободен, тогда вы можете использовать автономный режим. Если вы хотите использовать этот режим, вам необходимо сначала установить инструменты socat.
Один домен + Автономный режим:
acme.sh --issue -d example.com --standalone
Несколько доменов в одном сертификате + автономный режим:
acme.sh --issue -d example.com -d www.example.com -d mail.example.com --standalone
Если у вас нет веб-сервера, возможно, вы используете SMTP- или FTP-сервер, порт 443 свободен. Вы можете использовать автономный режим TLS ALPN. Acme.sh имеет встроенный автономный веб-сервер TLS, он может прослушивать порт 443 для выдачи сертификата.
Один домен + Автономный режим TLS ALPN:
acme.sh --issue -d example.com --alpn
Несколько доменов в одном сертификате + автономный режим TLS ALPN:
acme.sh --issue -d example.com -d www.example.com --alpn
Автоматическая интеграция DNS API
Если у вашего провайдера DNS есть API, acme.sh может использовать API для автоматического добавления записи TXT DNS для вас. Ваш сертификат будет автоматически выдан и обновлен. Никакой ручной работы не требуется. Прежде чем запрашивать сертификаты, настройте ключи API и адрес электронной почты. В настоящее время acme.sh изначально имеет автоматическую интеграцию DNS с примерно 60 провайдерами DNS и может использовать инструмент Lexicon для тех, которые не поддерживаются изначально.
Один домен + режим CloudFlare DNS API:
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email=""
acme.sh --issue -d example.com --dns dns_cfПодстановочный сертификат + режим CloudFlare DNS API:
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email=""
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-сертификат
После создания сертификатов вы, вероятно, захотите установить/скопировать выданные сертификаты в нужное место на диске. Вы должны использовать эту команду, чтобы скопировать сертификаты в целевые файлы, не используйте файлы сертификатов в папке
~/.acme.sh/
, они предназначены только для внутреннего использования, структура папок может измениться в будущее. Перед установкой создайте удобный каталог для хранения сертификатов. Например, это может быть/etc/letsencrypt
,/etc/nginx/ssl
или/etc/apache2/ssl
, в зависимости от вашего веб-сервера. программное обеспечение и ваши собственные настройки для хранения материалов, связанных с SSL.Пример апача:
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-сертификаты Lets 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.
Ссылки
- https://letsencrypt.org/