Начало работы с acme.sh и клиентом Let’s Encrypt SSL |

Начало работы с acme.sh и клиентом Let’s Encrypt SSL

Мануал

Acme.sh – это простой, мощный и простой в использовании клиент протокола ACME, написанный исключительно на языке оболочки (оболочка Unix), совместимый с оболочками bash, dash и sh.

Помогает управлять установкой, продлением, отзывом SSL-сертификатов.

Он поддерживает протоколы ACME версии 1 и ACME версии 2, а также сертификаты подстановочных знаков ACME v2.

Клиент ACME с нулевой зависимостью делает его еще лучше.

Вам не нужно скачивать и устанавливать весь интернет, чтобы он работал.

Инструмент не требует доступа root или sudo, но рекомендуется использовать root.

Acme.sh поддерживает следующие методы проверки, которые можно использовать для подтверждения владения доменом:

  • Webroot mode
  • Standalone mode
  • Standalone tls-alpn mode
  • Apache mode
  • Nginx mode
  • DNS mode
  • DNS alias mode
  • Stateless mode

Что такое 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 clone и установка:

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 "hi@acme.sh" \
          --accountkey ~/myaccount.key \
          --accountconf ~/myaccount.conf \
          --useragent "this is my client."

Вам не нужно устанавливать все параметры, просто установите те, которые вам нужны.

Объяснение вариантов:

–home – это пользовательский каталог для установки acme.sh. По умолчанию он устанавливается в ~/.acme.sh.
–config-home является записываемой папкой, acme.sh запишет туда все файлы (включая cert / keys, config). По умолчанию это в –home.
–cert-home – это специальный каталог для сохранения выдаваемых вами сертификатов. По умолчанию он сохраняется в –config-home.
–accountemail – это адрес электронной почты, используемый для регистрации учетной записи в Let’s Encrypt, вы получите уведомление об обновлении сюда. По умолчанию пусто.
–accountkey – файл, сохраняющий закрытый ключ вашей учетной записи. По умолчанию он сохраняется в –config-home.
–useragent – значение заголовка агента пользователя, используемое для отправки в 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 свободен, тогда вы можете использовать автономный режим.

Если вы хотите использовать этот режим, вам сначала нужно установить инструменты 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 свободен.

Вы можете использовать автономный режим TLS ALPN. Acme.sh имеет встроенный автономный веб-сервер 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 может использовать его для автоматического добавления записи DNS TXT.

Ваш сертификат будет автоматически выдан и продлен.

Ручной работы не требуется.

Прежде чем запрашивать сертификаты, настройте ключи API и адрес электронной почты.

В настоящее время acme.sh имеет встроенную автоматическую DNS-интеграцию с около 60 DNS-провайдерами и может использовать инструмент Lexicon для тех, кто не поддерживается изначально.

Один домен + CloudFlare DNS API режим:

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="xxxx@sss.com"
acme.sh --issue -d example.com --dns dns_cf

Wildcard сертификат + режим CloudFlare DNS API:

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="xxxx@sss.com"
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

Вам не нужно обновлять сертификаты вручную.

Все сертификаты будут обновляться автоматически каждые 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 будет обновляться автоматически.

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий для cryptoparty Отменить ответ

  1. Sintal

    Здравствуйте.
    Скажите, что означает фраза: “Создаст ежедневную работу cron для проверки и обновления сертификатов, если это необходимо.”
    Кому это необходимо? Мне (на всякий случай)? Или сертификату? А тогда зачем ему каждый день самого себя проверять? Вроде бы у него самого должна быть где-то прописана дата окончания сертификата и он должен эту дату знать…

    Ответить
    1. cryptoparty автор

      Добрый день!

      Так сертификат может быть отозван, а не только просрочен

      Ответить
  2. Oleg

    Ну и к чему этот перевод официального дока? Можно было и типичные ошибки разобрать, например. А так это фуфло, а не статья.

    Ответить
    1. cryptoparty автор

      Спасибо за отзыв 🙂

      Ответить