Клиент протокола ACME, написанный исключительно на языке Shell (оболочка Unix).
Полная реализация протокола ACME.
Поддержка сертификатов ECDSA
Поддержка SAN и групповых сертификатов
Простой, мощный и очень простой в использовании. Вам понадобится всего 3 минуты, чтобы научиться этому.
Совместимость с Bash, Dash и Sh.
Написан исключительно на Shell, без каких-либо зависимостей от Python.
Всего один скрипт для автоматической выдачи, обновления и установки сертификатов.
НЕ требует доступа root/sudoer
.
Докер готов
IPv6 готов
Уведомления о заданиях Cron об обновлении, ошибках и т. д.
Вероятно, это самый easiest & smartest
сценарий оболочки для автоматической выдачи и обновления бесплатных сертификатов.
Вики: https://github.com/acmesh-official/acme.sh/wiki
Для любителей Docker: acme.sh ? Докер
Твиттер: @neilpangxa
FreeBSD.org
Ruby-china.org
Проксмокс
pfsense
Loadbalancer.org
дискурс.орг
Центминмод
слинкс
opnsense.org
Веб-панель CentOS
lnmp.org
более...
НЕТ | Статус | Платформа |
---|---|---|
1 | Mac OS X | |
2 | Windows (cygwin с Curl, OpenSSL и crontab включены) | |
3 | FreeBSD | |
4 | Солярис | |
5 | Убунту | |
6 | NA | pfsense |
7 | OpenBSD | |
8 | NetBSD | |
9 | ДраконМухаBSD | |
10 | Омниос | |
11 | Дебиан | |
12 | ЦентОС | |
13 | openSUSE | |
14 | Альпийский Linux (с завитком) | |
15 | Архлинукс | |
16 | шляпа-федора | |
17 | Кали Линукс | |
18 | Oracle Linux | |
19 | Магейя | |
10 | Генту Линукс | |
11 | ОчиститьLinux | |
22 | ----- | Облачный Linux #111 |
23 | ----- | OpenWRT: протестировано и работает. См. вики-страницу |
24 | Proxmox: см. Proxmox VE Wiki. Версия 4.x, 5.0, 5.1, версия 5.2 и выше |
Ознакомьтесь с нашим тестовым проектом:
https://github.com/acmesh-official/acmetest
Центр сертификации ZeroSSL.com (по умолчанию)
Letsencrypt.org CA
BuyPass.com RU
SSL.com CA
Публичный центр сертификации Google.com
Строгий режим Pebble
Любой другой центр сертификации, соответствующий RFC8555.
Веб-режим
Автономный режим
Автономный режим tls-alpn
Режим Апача
Режим Nginx
Режим DNS
Режим псевдонимов DNS
Режим без сохранения состояния
Проверьте этот проект: https://github.com/acmesh-official/get.acme.sh
локон https://get.acme.sh | sh -s электронная почта[email protected]
Или:
wget -O - https://get.acme.sh | sh -s электронная почта[email protected]
Клонируйте этот проект и запустите установку:
git-клон https://github.com/acmesh-official/acme.sh.gitcd ./acme.sh ./acme.sh --install -m мой@example.com
В этом случае вам don't have to be root
, хотя it is recommended
.
Расширенная установка: https://github.com/acmesh-official/acme.sh/wiki/How-to-install.
Установщик выполнит 3 действия:
Создайте и скопируйте acme.sh
в свой домашний каталог ( $HOME
): ~/.acme.sh/
. Все сертификаты также будут помещены в эту папку.
Создайте псевдоним для: acme.sh=~/.acme.sh/acme.sh
.
Создайте ежедневное задание cron для проверки и обновления сертификатов при необходимости.
Пример записи в Cron:
0 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null
После установки необходимо закрыть текущий терминал и снова открыть его, чтобы псевдоним вступил в силу.
Хорошо, теперь вы готовы выдавать сертификаты.
Показать справочное сообщение:
root@v1:~# acme.sh -h
Пример 1: Один домен.
acme.sh --issue -d example.com -w /home/wwwroot/example.com
или:
acme.sh --issue -d example.com -w /home/имя_пользователя/public_html
или:
acme.sh --issue -d example.com -w /var/www/html
Пример 2. Несколько доменов в одном сертификате.
acme.sh --issue -d example.com -d www.example.com -d cp.example.com -w /home/wwwroot/example.com
Параметр /home/wwwroot/example.com
или /home/username/public_html
или /var/www/html
— это корневая папка веб-сайта, в которой вы размещаете файлы своего веб-сайта. Вы ДОЛЖНЫ иметь write access
в эту папку.
Второй аргумент «example.com» — это основной домен, для которого вы хотите выдать сертификат. У вас должен быть там хотя бы один домен.
Вы должны указать и привязать все домены к одному и тому же корневому каталогу: /home/wwwroot/example.com
.
Сертификаты будут размещены в ~/.acme.sh/example.com/
Сертификаты будут обновляться автоматически каждые 60 дней.
Дополнительные примеры: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert.
После создания сертификата вы, вероятно, захотите установить/скопировать сертификат на свой Apache/Nginx или другие серверы. Вы ДОЛЖНЫ использовать эту команду для копирования сертификатов в целевые файлы. НЕ используйте файлы сертификатов в папке ~/.acme.sh/ , они предназначены только для внутреннего использования, структура папок может измениться в будущем.
Пример Апача :
acme.sh --install-cert -d example.com --cert-file /путь/к/certfile/in/apache/cert.pem --key-file /путь/к/ключевому файлу/in/apache/key.pem --fullchain-file /путь/к/fullchain/certfile/apache/fullchain.pem --reloadcmd "принудительная перезагрузка службы apache2"
Пример Нгинкса :
acme.sh --install-cert -d example.com --key-file /путь/к/ключевому файлу/in/nginx/key.pem --fullchain-file /путь/к/fullchain/nginx/cert.pem --reloadcmd «принудительная перезагрузка службы nginx»
Обязателен только домен, все остальные параметры необязательны.
Информация о владельце и разрешении существующих файлов сохраняется. Вы можете предварительно создать файлы, чтобы определить владельца и разрешения.
Установите/скопируйте сертификат/ключ в производственный путь Apache или Nginx.
По умолчанию сертификат будет обновляться каждые 60 дней (это можно настроить). После обновления сертификата служба Apache/Nginx будет автоматически перезагружена с помощью команды: service apache2 force-reload
или service nginx force-reload
.
Пожалуйста, будьте осторожны: команда reloadcmd очень важна. Сертификат может быть автоматически продлен, но без правильного «reloadcmd» сертификат может не быть сброшен на ваш сервер (например, nginx или apache), тогда ваш веб-сайт не сможет отображать обновленный сертификат через 60 дней.
(требуется root/sudoer или разрешение на прослушивание порта 80 (TCP))
Порт 80
(TCP) ДОЛЖЕН быть свободен для прослушивания, в противном случае вам будет предложено освободить его и повторить попытку.
acme.sh --issue --standalone -d example.com -d www.example.com -d cp.example.com
Дополнительные примеры: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert.
(требуется root/sudoer или разрешение на прослушивание порта 443 (TCP))
Порт 443
(TCP) ДОЛЖЕН быть свободен для прослушивания, в противном случае вам будет предложено освободить его и повторить попытку.
acme.sh --issue --alpn -d example.com -d www.example.com -d cp.example.com
Дополнительные примеры: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert.
(требуется root/sudoer, поскольку он необходим для взаимодействия с сервером Apache)
Если вы используете веб-сервер, рекомендуется использовать Webroot mode
.
В частности, если вы используете сервер Apache, вместо этого вы можете использовать режим Apache. Этот режим не записывает файлы в корневую веб-папку.
Просто установите строку «apache» в качестве второго аргумента, и плагин Apache будет автоматически использован.
acme.sh --issue --apache -d example.com -d www.example.com -d cp.example.com
Этот режим Apache предназначен только для выдачи сертификата, он не меняет файлы конфигурации Apache. Вам нужно будет настроить файлы конфигурации вашего веб-сайта, чтобы использовать сертификат самостоятельно. Мы не хотим портить ваш сервер Apache, не волнуйтесь.
Дополнительные примеры: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert.
(требуется root/sudoer, поскольку он необходим для взаимодействия с сервером Nginx)
Если вы используете веб-сервер, рекомендуется использовать Webroot mode
.
В частности, если вы используете сервер nginx, вместо этого вы можете использовать режим nginx. Этот режим не записывает файлы в корневую веб-папку.
Просто установите строку «nginx» в качестве второго аргумента.
Он автоматически настроит сервер nginx для проверки домена, а затем восстановит конфигурацию nginx до исходной версии.
Итак, конфигурация не изменена.
acme.sh --issue --nginx -d example.com -d www.example.com -d cp.example.com
Этот режим nginx предназначен только для выдачи сертификата, он не меняет файлы конфигурации nginx. Вам нужно будет настроить файлы конфигурации вашего веб-сайта, чтобы использовать сертификат самостоятельно. Мы не хотим портить ваш сервер nginx, не волнуйтесь.
Дополнительные примеры: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert.
Если ваш DNS-провайдер поддерживает доступ к API, мы можем использовать этот API для автоматической выдачи сертификатов.
Вам не придется ничего делать вручную!
https://github.com/acmesh-official/acme.sh/wiki/dnsapi
Сначала см. https://github.com/acmesh-official/acme.sh/wiki/dns-manual-mode.
Если ваш DNS-провайдер не поддерживает доступ к API, вы можете добавить текстовую запись вручную.
acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com
Вы должны получить вывод, как показано ниже:
Добавьте следующую текстовую запись: Домен:_acme-challenge.example.com Значение Txt: 9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c Добавьте следующую текстовую запись: Домен:_acme-challenge.www.example.com Значение TXT: 9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Пожалуйста, добавьте эти текстовые записи в домены. Ждем, пока DNS вступит в силу.
Затем просто перезапустите с аргументом renew
:
acme.sh --renew -d example.com
Хорошо, дело сделано.
Будьте осторожны, это ручной режим DNS, он не может быть продлен автоматически. вам придется вручную добавить новую текстовую запись в свой домен при продлении сертификата.
Вместо этого используйте режим DNS API.
Просто установите параметр keylength
с префиксом ec-
.
Например:
acme.sh --issue -w /home/wwwroot/example.com -d example.com --keylength ec-256
acme.sh --issue -w /home/wwwroot/example.com -d example.com -d www.example.com --keylength ec-256
Пожалуйста, обратите внимание на параметр keylength
выше.
Допустимые значения:
ec-256 (prime256v1, «ECDSA P-256», который является типом ключа по умолчанию)
ec-384 (secp384r1, «ECDSA P-384»)
ec-521 (secp521r1, «ECDSA P-521», который еще не поддерживается Let's Encrypt.)
2048 (РСА2048)
3072 (RSA3072)
4096 (РСА4096)
Это просто: просто укажите домен с подстановочными знаками в качестве параметра -d
.
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf
Нет, вам не нужно продлевать сертификаты вручную. Все сертификаты будут обновляться автоматически каждые 60 дней.
Однако вы также можете принудительно обновить сертификат:
acme.sh --renew -d example.com --force
или для сертификата ECC:
acme.sh --renew -d example.com --force --ecc
Чтобы остановить продление сертификата, вы можете выполнить следующее, чтобы удалить сертификат из списка продления:
acme.sh --remove -d example.com [--ecc]
Файл сертификата/ключа не удаляется с диска.
Вы можете удалить соответствующий каталог (например, ~/.acme.sh/example.com
) самостоятельно.
acme.sh
acme.sh постоянно развивается, поэтому настоятельно рекомендуется использовать последнюю версию кода.
Вы можете обновить acme.sh до последней версии кода:
acme.sh --обновить
Вы также можете включить автоматическое обновление:
acme.sh --upgrade --auto-upgrade
Тогда файл acme.sh будет обновляться автоматически.
Отключить автоматическое обновление:
acme.sh --upgrade --auto-upgrade 0
https://github.com/acmesh-official/acme.sh/wiki/Issue-a-cert-from-existing-CSR
https://github.com/acmesh-official/acme.sh/wiki/notify
Говорите на языке ACME, используя оболочку, прямо в «Let's Encrypt».
ЗАДАЧА:
Акме-тини: https://github.com/diafygi/acme-tiny
Протокол ACME: https://github.com/ietf-wg-acme/acme.
Этот проект существует благодаря всем людям, которые вносят свой вклад.
Станьте финансовым спонсором и помогите нам поддержать наше сообщество. [Способствовать]
Поддержите этот проект своей организацией. Здесь появится ваш логотип со ссылкой на ваш сайт. [Способствовать]
Лицензия GPLv3.
Пожалуйста, Star и Fork меня.
Проблемы и запросы на включение приветствуются.
Ваше пожертвование сделает acme.sh лучше:
PayPal/Alipay(支付宝)/Wechat(微信): https://donate.acme.sh/
Список пожертвований