An ACME Shell script: acme.sh
— Протокол ACME, клиент написан на языке Shell (Unix shell). — Полная реализация протокола ACME. — Поддержка сертификатов ECDSA. — Поддержка SAN и wildcard сертификатов. — Простой, мощный и очень удобный в использовании. Вам потребуется всего 3 минуты, чтобы изучить его. — Совместимость с Bash, dash и sh. — Написан исключительно на Shell без зависимостей от Python. — Всего один скрипт для выдачи, обновления и установки сертификатов автоматически. — НЕ требует доступа root/sudoer. — Готов к работе с Docker. — Поддерживает IPv6. — Уведомления о заданиях cron для обновления или ошибки и т. д.
Это, вероятно, самый простой и умный сценарий оболочки для автоматической выдачи и обновления бесплатных сертификатов.
Wiki: https://github.com/acmesh-official/acme.sh/wiki
Для поклонников Docker: acme.sh Docker
Twitter: @neilpangxa
Who: — FreeBSD.org — ruby-china.org — Proxmox — pfsense — webfaction — Loadbalancer.org — discourse.org — Centminmod — splynx — и другие. # Tested OS
№ | Статус | Платформа |
---|---|---|
1 | Mac OSX | |
2 | Windows (cygwin с curl, openssl и crontab включены) | |
3 | FreeBSD | |
4 | Solaris | |
5 | Ubuntu | |
6 | NA | pfsense |
7 | OpenBSD | |
8 | NetBSD | |
9 | DragonFlyBSD | |
10 | Debian | |
11 | CentOS | |
12 | openSUSE | |
13 | Alpine Linux (с curl) | |
14 | Archlinux | |
15 | Fedora | |
16 | Kali Linux | |
17 | Oracle Linux | |
18 | Mageia | |
19 | Gentoo Linux | |
20 | ClearLinux | |
21 | ——— | Cloud Linux https://github.com/acmesh-official/acme.sh/issues/111 |
22 | ——— | OpenWRT: протестировано и работает. См. wiki |
https://github.com/acmesh-official/acme.sh/wiki/How-to-run-on-OpenWRT
|23|| Proxmox: See Proxmox VE Wiki. Version 4.x, 5.0, 5.1, version 5.2 and up
Проверьте наш проект по тестированию:
https://github.com/acmesh-official/acmetest
Поддерживаемые центры сертификации (CA):
Поддерживаемые режимы:
1. Как установить
Проверьте этот проект: https://github.com/acmesh-official/get.acme.sh
curl https://get.acme.sh | sh -s email=my@example.com
Или:
wget -O - https://get.acme.sh | sh -s email=my@example.com
Клонируйте этот проект и запустите установку:
git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
./acme.sh --install -m my@example.com
Вам не обязательно быть root, хотя это рекомендуется.
Подробная информация об установке: https://github.com/acmesh-official/acme.sh/wiki/How-to-install
Установщик выполнит 3 действия:
Пример записи в cron:
0 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null
После установки необходимо закрыть текущий терминал и открыть его снова, чтобы псевдоним вступил в силу.
Теперь вы готовы выдавать сертификаты.
Показать справочное сообщение:
root@v1:~# acme.sh -h
2. Просто выдайте сертификат
Пример 1: Один домен.
acme.sh --issue -d example.com -w /home/wwwroot/example.com
или:
acme.sh --issue -d example.com -w /home/username/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
— это папка веб-корня, где вы размещаете файлы своего веб-сайта. У вас ДОЛЖЕН быть доступ на запись к этой папке.
Второй аргумент «example.com» — основной домен, для которого вы хотите выдать сертификат. У вас должен быть хотя бы один домен.
Вы должны указать и привязать все домены к одной и той же папке веб-корня: /home/wwwroot/example.com
.
Сертификаты будут размещены в ~/.acme.sh/example.com/
Срок действия сертификатов будет автоматически продлён каждые 60 дней.
Дополнительные примеры: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
3. Установите сертификат на Apache/Nginx и т. д.
После создания сертификата вы, вероятно, захотите установить/скопировать сертификат на свои серверы Apache/Nginx или другие. Вы ДОЛЖНЫ использовать эту команду для копирования сертификатов в целевые файлы, НЕ используйте файлы сертификатов в папке ~/.acme.sh/, они предназначены только для внутреннего использования, структура папок может измениться в будущем.
Apache пример:
acme.sh --install-cert -d example.com \
--cert-file **Использование DNS в ручном режиме:**
См.: https://github.com/acmesh-official/acme.sh/wiki/dns-manual-mode сначала.
Если ваш поставщик DNS не поддерживает доступ к API, вы можете добавить запись TXT вручную.
```bash
acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com
Вы должны получить вывод, подобный следующему:
Добавьте следующую запись TXT:
Domain:_acme-challenge.example.com
Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c
Добавьте следующую запись TXT:
Domain:_acme-challenge.www.example.com
Txt value:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Пожалуйста, добавьте эти записи TXT в домены. Ожидание эффекта от DNS.
Затем просто перезапустите с аргументом renew
:
acme.sh --renew -d example.com
Хорошо, готово. Будьте осторожны, это режим DNS вручную, он не может быть продлён автоматически. Вам придётся добавлять новую запись TXT в свой домен вручную при продлении сертификата. Пожалуйста, используйте режим API DNS вместо этого.
Выпуск сертификатов ECC
Let's Encrypt теперь может выдавать сертификаты ECDSA.
И мы их тоже поддерживаем!
Просто установите параметр 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
, указанный выше.
Допустимые значения:
Как выпустить сертификаты с подстановочными знаками
Это просто, просто укажите домен с подстановочным знаком в качестве параметра -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 --upgrade
Вы также можете включить автоматическое обновление:
acme.sh --upgrade --auto-upgrade
Тогда acme.sh будет постоянно обновляться автоматически. Отключите автоматическое обновление:
acme.sh --upgrade --auto-upgrade 0
Как выдать сертификат на основе существующего CSR https://github.com/acmesh-official/acme.sh/wiki/Issue-a-cert-from-existing-CSR Отправка уведомлений в cronjob https://github.com/acmesh-official/acme.sh/wiki/notify Под капотом Говорите на языке ACME, используя оболочку, напрямую с «Let's Encrypt». TODO: Благодарности
Этот проект существует благодаря всем людям, которые вносят свой вклад.
Станьте финансовым вкладчиком и помогите нам поддерживать наше сообщество. [Внести вклад]
Поддержите этот проект своей организацией. Ваш логотип появится здесь с ссылкой на ваш веб-сайт. Вклад
Лицензия — GPLv3.
Пожалуйста, ставьте звёзды и форкайте меня.
Проблемы и запросы на вытягивание приветствуются.
Ваши пожертвования делают acme.sh лучше:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )