Поиск по сайту:

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


На этой странице

  1. Что такое Lets Encrypt
  2. Использование Acme.sh и основные команды
    1. Установка Acme.sh
    2. Выдать SSL-сертификат
    3. Автоматическая интеграция API DNS
    4. Установить SSL-сертификат Lets Encrypt
    5. Обновить SSL-сертификаты Lets Encrypt
    6. Как обновить 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 действия:

    1. Создайте и скопируйте acme.sh в свой домашний каталог ($HOME): ~/.acme.sh/. Все сертификаты также будут помещены в эту папку.
    2. Создайте псевдоним для: acme.sh=~/.acme.sh/acme.sh.
    3. Создавайте ежедневные задания 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/