Automatizace vydávání SSL certifikátů je dnes standardem moderní správy webové infrastruktury. Nástroj acme.sh v kombinaci s BEST-HOSTING DNS API umožňuje plně automatické získávání a obnovu SSL/TLS certifikátů - včetně wildcard certifikátů - bez nutnosti jakéhokoli ručního zásahu.
acme.sh je open-source shell skript implementující protokol ACME (Automatic Certificate Management Environment), který používají certifikační autority jako ZeroSSL, Let's Encrypt a další k automatickému vydávání důvěryhodných SSL/TLS certifikátů zdarma.
acme.sh patří mezi nejrozšířenější ACME klienty na světě - je oblíbený zejména pro svou přenositelnost (nevyžaduje žádné závislosti kromě shellu), jednoduchý způsob instalace a rozsáhlou podporu DNS providerů prostřednictvím tzv. DNS API pluginů.
Při vydávání SSL certifikátu musí certifikační autorita ověřit, že žadatel skutečně kontroluje danou doménu. Nejběžnějším způsobem je HTTP ověření přes soubor umístěný na webovém serveru. To ale není vždy možné - například u:
*.example.com), kde HTTP ověření ze své podstaty nefunguje,V těchto případech nastupuje DNS-01 challenge: certifikační autorita místo HTTP souboru ověří existenci speciálního TXT záznamu v DNS zóně dané domény. Celý proces lze plně automatizovat právě prostřednictvím DNS API - acme.sh TXT záznam přes API sám přidá i odstraní.
BEST-HOSTING provozuje vlastní REST API pro správu DNS záznamů, primárně navržené pro potřeby DNS-01 challenge při vydávání SSL certifikátů. API umožňuje programově přidávat a mazat TXT záznamy v DNS zónách spravovaných na naší platformě.
Náš plugin dns_bh byl přijat do oficiální distribuce acme.sh, kde je dostupný jako součást standardní instalace. Není tedy třeba nic stahovat ručně - plugin je připraven k použití ihned po instalaci acme.sh.
Automatizace SSL přes BEST-HOSTING DNS API je vhodná pro každého, kdo:
Přístup k DNS API je chráněn unikátním párem přihlašovacích údajů (BH_API_USER a BH_API_KEY), které si každý zákazník generuje samostatně v klientském portálu BEST-HOSTING v sekci Profil / REST API.
Doporučujeme:
BH_API_USER, BH_API_KEY) z klientského portálu
curl https://get.acme.sh | sh -s email=vas@email.cz
Po instalaci restartujte shell - nejjednodušeji odhlášením a opětovným přihlášením - nebo spusťte:
source ~/.bashrc
export BH_API_USER="váš_api_user"
export BH_API_KEY="váš_api_klíč"
Acme.sh si přihlašovací údaje po prvním úspěšném použití uloží do svého konfiguračního souboru a při obnově nebo vydání nového certifikátu je použije automaticky. Pro trvalé uložení na úrovni shellu je možné přidat tyto řádky i do ~/.bashrc nebo ~/.profile.
Certifikát pro jednu doménu:
acme.sh --issue --dns dns_bh -d example.com --dnssleep 120
Wildcard certifikát (doména + všechny subdomény):
acme.sh --issue --dns dns_bh -d example.com -d '*.example.com' --dnssleep 120
Certifikát pro více různých domén najednou (SAN certifikát):
acme.sh --issue --dns dns_bh \
-d example.com \
-d '*.example.com' \
-d example2.cz \
--dnssleep 120
Parametr
--dnssleepzajistí, že acme.sh před ověřením počká na propagaci TXT záznamu v DNS. Hodnota 120 sekund je doporučený bezpečný interval.
Po vydání lze instalovat certifikát do cílové aplikace, například pro nginx:
acme.sh --install-cert -d example.com \
--cert-file /etc/nginx/ssl/example.com.crt \
--key-file /etc/nginx/ssl/example.com.key \
--fullchain-file /etc/nginx/ssl/example.com.fullchain.crt \
--reloadcmd "systemctl reload nginx"
acme.sh si po prvním vydání zapamatuje veškeré parametry a certifikát bude automaticky obnovovat přibližně 30 dní před vypršením. Při instalaci acme.sh je automaticky přidán záznam do cronu - obnova probíhá zcela bez zásahu.
Stav automatické obnovy lze kdykoliv zkontrolovat:
acme.sh --list
acme.sh podporuje odesílání notifikací při vydání nebo obnově certifikátu - i v případě selhání. To se hodí zejména u automatizovaných prostředí, kde chcete mít přehled o tom, zda obnova proběhla v pořádku, aniž byste museli cokoliv ručně kontrolovat.
Podporované platformy zahrnují mimo jiné Telegram, Discord, Slack, Matrix, e-mail přes SMTP nebo Pushover. Notifikace se nastavují jednorázově a platí pro všechny certifikáty spravované danou instalací acme.sh.
Discord:
export DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/..."
acme.sh --set-notify \
--notify-hook discord \
--notify-level 2
Telegram:
export TELEGRAM_BOT_APITOKEN="váš_bot_token"
export TELEGRAM_CHAT_ID="váš_chat_id"
acme.sh --set-notify \
--notify-hook telegram \
--notify-level 2
Parametr
--notify-levelurčuje, kdy se notifikace odešle:
0- vypnuto1- pouze při chybě2- při úspěšné obnově certifikátu nebo při chybě3- vždy, i když obnova nebyla potřeba - každý den
Máte dotazy nebo potřebujete s nastavením pomoci? Kontaktujte naši technickou podporu.