Премиальное программное обеспечение и практические уроки
Используйте скрипт acme.sh для подачи заявки на бесплатный сертификат доменного имени TSL/SSL на сервере Linux.
acme.sh Бесплатное приложениеSSL-сертификат,自动续签配置 acme.sh 脚本,ЛинуксОчень полезноСертификат доменного имени申请脚本,安装简单,支持DNSПрименение метода и применение метода HTTP,Давайте зашифруемПодача заявки на сертификат доменного имени проста, автоматизирована и бесплатна. acme.sh реализует протокол ACME и может генерировать бесплатные сертификаты от Let's Encrypt.
Введение в let's encrypt и acme.sh
Что такое Let's Encrypt
Let's Encrypt — это центр цифровой сертификации, запущенный в третьем квартале 2015 года. Его цель — исключить сложный процесс ручного создания и установки сертификатов с помощью автоматизированных процессов и способствовать более широкому использованию Всемирной паутины.серверЗашифрованные соединения повсюду, предоставляя бесплатный SSL/SSL/ТЛССертификат.
Let's Encrypt разработан исследовательской группой Internet Security Research Group (ISRG). Среди основных спонсоров — Electronic Frontier Foundation, Mozilla Foundation, Akamai и Cisco. 9 апреля 2015 года ISRG объявила о партнёрстве с Linux Foundation.
Протокол, используемый для внедрения нового цифрового центра сертификации, называется Средой автоматического управления сертификатами (ACME).GitHubПроект этой спецификации доступен на сайте , а версия предложения была опубликована в видеИнтернетПроект опубликован.
Процесс подачи заявки на сертификат доменного имени от Let's Encrypt прост, автоматизирован и бесплатен.
Что такое acme.sh
Проще говоря acme.sh Он реализует протокол ACME и может генерировать бесплатные сертификаты от Let's Encrypt.
acme.sh Он имеет следующие особенности:
- Клиент протокола ACME, написанный исключительно на языке Shell (оболочка Unix).
- Полная реализация протокола ACME.
- Поддержка сертификатов ECDSA
- Поддержка SAN и wildcard-сертификатов
- Простой, мощный и очень удобный в использовании. Освоить его можно всего за 3 минуты.
- Совместимо с Bash, dash и sh.
- Написано исключительно на Shell, не зависит от Питон.
- Автоматизируйте выдачу, продление и установку сертификатов с помощью всего одного скрипта.
- Права доступа не требуются. root/sudoer
- Готов к использованию с Docker
- Готов к IPv6
- Для продления или ошибок и т.п. крон Уведомление о назначении.
Домашняя страница проекта Github:https://github.com/acmesh-official/acme.sh
Как установить acme.sh
Чистый скрипт оболочки Unix, реализующий клиентский протокол ACME.
Установить скрипт acme.sh
Установка очень проста, одна команда:
мой@example.comЗамените на свой адрес электронной почты.
curl https://get.acme.sh | sh -s email=my@example.com
Загрузите скрипт на сервер и установите его:
wget -O - https://get.acme.sh | sh -s email=my@example.com
Альтернативно, для установки из git, клонируйте этот проект и запустите установку:
git clone https://github.com/acmesh-official/acme.sh.git cd ./acme.sh ./acme.sh --install -m my@example.com
Установщик выполнит 3 действия:
- Создайте и скопируйте в свой домашний каталог ( ): . Все сертификаты также будут помещены в эту папку. acme.sh$HOME~/.acme.sh/
- Создайте псевдоним для следующего: acme.sh=~/.acme.sh/acme.sh
- Создайте ежедневное задание cron для проверки и обновления сертификатов по мере необходимости.
Настройте скрипт acme.sh
Установить и использовать acme.sh могут как обычные пользователи, так и пользователи root.
Процесс установки проходит в следующие этапы:
Установите acme.sh в свой домашний каталог: ~/.acme.sh/ и создайте псевдоним bash для удобства:
псевдоним acme.sh=~/.acme.sh/acme.sh echo 'псевдоним acme.sh=~/.acme.sh/acme.sh' >>/etc/profile
В процессе установки будет автоматически создано задание cron для автоматической проверки всех сертификатов в 00:00 каждый день. Если срок действия сертификатов подходит к концу и их необходимо обновить, они будут автоматически обновлены.
00 00 * * * root /root/.acme.sh/acme.sh --cron --home /root/.acme.sh &>/var/log/acme.sh.logs
Более подробные параметры установки см.: https://github.com/Neilpang/acme.sh/wiki/How-to-install
Установка этого скрипта не затронет существующие системные функции и файлы. Все изменения ограничены каталогом установки: ~/.acme.sh/
Подайте заявку на сертификат с помощью acme.sh
acme.sh реализует все протоколы аутентификации, поддерживаемые протоколом ACME. Существует два основных способа аутентификации: HTTP и DNS.
HTTP-метод
Метод http требует размещения файла в корневом каталоге вашего сайта для подтверждения права собственности на доменное имя. После проверки вы можете сгенерировать сертификат.
Возьмем в качестве примера доменное имя boxpu.com:
acme.sh --issue -d boxpu.com -d *.boxpu.com --webroot /www/wwwroot/boxpu.com/
Просто укажите доменное имя и корневой каталог вашего сайта. acme.sh автоматически сгенерирует файл проверки, поместит его в корневой каталог и завершит процесс проверки. После этого файл проверки будет автоматически удален без каких-либо побочных эффектов.
如果你用的 apache服务器,acme.sh 还可以智能的从 apache的配置中自动完成验证,你不需要指定网站根目录:
acme.sh --issue -d boxpu.com --boxpu.com
Если вы используете nginxСервер, или антигенерация, acme.sh Вы также можете автоматически завершить проверку из конфигурации nginx, вам не нужно указывать корневой каталог сайта:
acme.sh --issue -d boxpu.com --nginx
Примечание: Независимо от того, используете ли вы Apache или Nginx, acme.sh восстановит вашу конфигурацию до предыдущего состояния после завершения процесса проверки. Это значит, что вам не нужно беспокоиться о повреждении конфигурации.
У этой конфигурации есть недостаток: вам необходимо самостоятельно настроить SSL-сертификат. В противном случае вы сможете только успешно сгенерировать сертификат, но ваш сайт по-прежнему не сможет получить доступ к https. Однако из соображений безопасности вам следует вручную изменить конфигурацию самостоятельно.
Если вы еще не запустили ни одной веб-службы и порт 80 свободен, acme.sh может выдавать себя за веб-сервер и временно прослушивать порт 80 для завершения проверки:
acme.sh --issue -d boxpu.com --standalone
Для более расширенного использования см.: https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert
DNS-метод
Преимущество этого метода в том, что вам не нужен никакой сервер или публичный IP-адрес, для завершения проверки вам нужны только записи разрешения DNS.
Недостатком этого метода является то, что если вы одновременно не настроите API автоматического DNS, acme.sh не сможет автоматически продлевать сертификат с помощью этого метода, и вам придется каждый раз вручную повторно анализировать и проверять принадлежность доменного имени.
Подать заявку на сертификат с использованием DNS
cd /root/.acme.sh acme.sh --issue -d *.boxpu.com -d boxpu.com --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please
Измените DNS и измените запись хоста на стороне управления NS.
Сгенерировать сертификат с использованием DNS
Получите бесплатный wildcard-сертификат домена от Let's Encrypt. После завершения разрешения DNS выполните следующую команду для повторной генерации сертификата:
acme.sh --renew -d *.boxpu.com -d boxpu.com --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please
Обратите внимание, что во второй раз он используется --обновить
DNS API
Настоящая сила метода DNS заключается в том, что вы можете использоватьРазрешение доменного имениAPI, предоставляемый поставщиком, автоматически добавляет записи txt для завершения проверки.
acme.sh в настоящее время поддерживает Cloudflare、dnspod、cloudxns、Godaddy И автоматическая интеграция десятков парсеров, таких как ovh.
Если взять в качестве примера dnspod, вам сначала нужно войти в свою учетную запись dnspod и сгенерировать свой API-идентификатор и API-ключ, оба из которых бесплатны.
export DP_Id="xxxxxxxxxxx" export DP_Key="xxxxxxxxxxxxxx" acme.sh --issue --dns dns_dp -d boxpu.com -d boxpu.com
Сертификат будетАвтоматически сгенерированоУказанные здесь API ID и API-ключ будут автоматически записаны. Вам не нужно будет указывать их снова при использовании API DNSPod в будущем. Просто сгенерируйте их напрямую:
acme.sh --issue -d boxpu.com --dns dns_dp
Более подробное использование API: https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md
Использование сертификатов TLS/SSL
Установка сертификата TLS/SSL
После того как сертификат сгенерирован, его необходимо скопировать туда, где он вам действительно нужен.
Обратите внимание, что сертификаты, сгенерированные по умолчанию, размещаются в установочном каталоге: ~/.acme.sh/. Не используйте файлы из этого каталога напрямую.
Например: не используйте следующий файл непосредственно в файле конфигурации nginx/apache.
Файлы здесь предназначены только для внутреннего использования, и структура каталогов может измениться. Правильный способ использования — использовать команду --installcert и указать целевое расположение, и файлы сертификатов будут скопированы в соответствующее расположение, например:
acme.sh --installcert -d boxpu.com \ --key-file /etc/nginx/ssl/uzbox.key \ --fullchain-file /etc/nginx/ssl/fullchain.cer \ --reloadcmd "systemctl force-reload nginx"
Установка SSL-сертификата на сервер Nginx
Например, в стандартной конфигурации Nginx рекомендуемый сгенерированный файл сертификата — fullchain.cer, а файл закрытого ключа — boxpu.com.key.
Настройте ssl_certificate в Nginx на использование fullchain.cer вместо .cer. В противном случае тест SSL Labs выдаст ошибку Chain Issues Incomplete.
Путь сертификата, сгенерированный выше, — /www/server/panel/vhost/cert/boxpu.com/;
Измените файл конфигурации Nginx
сервер { прослушивать 443; имя_сервера boxpu.com; ssl вкл; корневой html; индекс index.html index.htm; ssl_certificate /www/server/panel/vhost/cert/boxpu.com/fullchain.cer; ssl_certificate_key /www/server/panel/vhost/cert/boxpu.com/clsn.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers вкл; местоположение / { корневой html; индекс index.html index.htm; } }
Перезапустите nginx и загрузите новую конфигурацию.
systemctl принудительная перезагрузка nginx
Примечание: Здесь используется команда systemctl force-reload nginx, а не systemctl reload nginx. Команда reload не перезагружает сертификат, поэтому используется force-reload.
Продление сертификата
Обновление сертификата
Действующий сертификат действителен в течение 90 дней и будет выдан через 60 дней.Запланированные задачиАвтоматическое продление, вам не нужно ничего делать. Всё происходит автоматически, вам не нужно беспокоиться об истечении срока действия сертификата.
Обновления acme.sh
В настоящее время из-за частых обновлений протокола acme и центра сертификации letsencrypt, acme.sh также часто обновляется для синхронизации.
Обновите acme.sh до последней версии:
acme.sh --upgrade
Если вы не хотите обновляться вручную, вы можете включить автоматическое обновление:
acme.sh --upgrade --auto-upgrade
После этого acme.sh будет автоматически обновляться. Вы также можете отключить автоматическое обновление в любое время:
acme.sh --upgrade --auto-upgrade 0
Ссылки