<p align="center" <a href="https://zerossl.com?utmsource=acme-sh" <picture <!-- Dark mode -- <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/1308516b-e0cc-496d-b5df-e3932423ead6" / <!-- Light mode -- <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/4ba7a79e-8cc9-4d49-87fc-02d44fb7b043" / <!-- Fallback for environments without media queries -- <img alt="ZeroSSL" src="https://github.com/user-attachments/assets/4ba7a79e-8cc9-4d49-87fc-02d44fb7b043" height="auto" / </picture </a </p
<h1 align="center"🔐 acme.sh</h1 <h3 align="center"An ACME Protocol Client Written Purely in Shell</h3
<p align="center" <a href="https://github.com/acmesh-official/acme.sh/actions/workflows/FreeBSD.yml"<img src="https://github.com/acmesh-official/acme.sh/actions/workflows/FreeBSD.yml/badge.svg" alt="FreeBSD"</a <a href="https://github.com/acmesh-official/acme.sh/actions/workflows/OpenBSD.yml"<img src="https://github.com/acmesh-official/acme.sh/actions/workflows/OpenBSD.yml/badge.svg" alt="OpenBSD"</a <a href="https://github.com/acmesh-official/acme.sh/actions/workflows/NetBSD.yml"<img src="https://github.com/acmesh-official/acme.sh/actions/workflows/NetBSD.yml/badge.svg" alt="NetBSD"</a <a href="https://github.com/acmesh-official/acme.sh/actions/workflows/MacOS.yml"<img src="https://github.com/acmesh-official/acme.sh/actions/workflows/MacOS.yml/badge.svg" alt="MacOS"</a <a href="https://github.com/acmesh-official/acme.sh/actions/workflows/Ubuntu.yml"<img src="https://github.com/acmesh-official/acme.sh/actions/workflows/Ubuntu.yml/badge.svg" alt="Ubuntu"</a <a href="https://github.com/acmesh-official/acme.sh/actions/workflows/Windows.yml"<img src="https://github.com/acmesh-official/acme.sh/actions/workflows/Windows.yml/badge.svg" alt="Windows"</a <a href="https://github.com/acmesh-official/acme.sh/actions/workflows/Solaris.yml"<img src="https://github.com/acmesh-official/acme.sh/actions/workflows/Solaris.yml/badge.svg" alt="Solaris"</a <a href="https://github.com/acmesh-official/acme.sh/actions/workflows/DragonFlyBSD.yml"<img src="https://github.com/acmesh-official/acme.sh/actions/workflows/DragonFlyBSD.yml/badge.svg" alt="DragonFlyBSD"</a <a href="https://github.com/acmesh-official/acme.sh/actions/workflows/MidnightBSD.yml"<img src="https://github.com/acmesh-official/acme.sh/actions/workflows/MidnightBSD.yml/badge.svg" alt="MidnightBSD"</a <a href="https://github.com/acmesh-official/acme.sh/actions/workflows/GhostBSD.yml"<img src="https://github.com/acmesh-official/acme.sh/actions/workflows/GhostBSD.yml/badge.svg" alt="GhostBSD"</a <a href="https://github.com/acmesh-official/acme.sh/actions/workflows/Omnios.yml"<img src="https://github.com/acmesh-official/acme.sh/actions/workflows/Omnios.yml/badge.svg" alt="Omnios"</a <a href="https://github.com/acmesh-official/acme.sh/actions/workflows/OpenIndiana.yml"<img src="https://github.com/acmesh-official/acme.sh/actions/workflows/OpenIndiana.yml/badge.svg" alt="OpenIndiana"</a <a href="https://github.com/acmesh-official/acme.sh/actions/workflows/Tribblix.yml"<img src="https://github.com/acmesh-official/acme.sh/actions/workflows/Tribblix.yml/badge.svg" alt="Tribblix"</a <a href="https://github.com/acmesh-official/acme.sh/actions/workflows/Haiku.yml"<img src="https://github.com/acmesh-official/acme.sh/actions/workflows/Haiku.yml/badge.svg" alt="Haiku"</a </p
<p align="center" <img src="https://github.com/acmesh-official/acme.sh/workflows/Shellcheck/badge.svg" alt="Shellcheck" <img src="https://github.com/acmesh-official/acme.sh/workflows/PebbleStrict/badge.svg" alt="PebbleStrict" <img src="https://github.com/acmesh-official/acme.sh/workflows/Build%20DockerHub/badge.svg" alt="DockerHub" </p
<p align="center" <a href="https://opencollective.com/acmesh"<img src="https://opencollective.com/acmesh/all/badge.svg?label=financial+contributors" alt="Financial Contributors on Open Collective"</a <a href="https://gitter.im/acme-sh/Lobby?utmsource=badge&utmmedium=badge&utmcampaign=pr-badge&utmcontent=badge"<img src="https://badges.gitter.im/acme-sh/Lobby.svg" alt="Join the chat at Gitter"</a <a href="https://hub.docker.com/r/neilpang/acme.sh" title="Click to view the image on Docker Hub"<img src="https://img.shields.io/docker/stars/neilpang/acme.sh.svg" alt="Docker stars"</a <a href="https://hub.docker.com/r/neilpang/acme.sh" title="Click to view the image on Docker Hub"<img src="https://img.shields.io/docker/pulls/neilpang/acme.sh.svg" alt="Docker pulls"</a </p
---
✨ Features
- 🐚 An ACME protocol client written purely in Shell (Unix shell) language
- 📜 Full ACME protocol implementation
- 🔑 Support ECDSA certificates
- 🌐 Support SAN and wildcard certificates
- ⚡ Simple, powerful and very easy to use — only 3 minutes to learn!
- 🔧 Compatible with Bash, dash and sh
- 🚫 No dependencies on Python
- 🔄 One script to issue, renew and install your certificates automatically
- 👤 DOES NOT require root/sudoer access
- 🐳 Docker ready
- 🌍 IPv6 ready
- 📧 Cron job notifications for renewal or error
💡 It's probably the easiest & smartest shell script to automatically issue & renew free certificates.
<p align="center" <a href="https://github.com/acmesh-official/acme.sh/wiki"<strong📚 Wiki</strong</a • <a href="https://github.com/acmesh-official/acme.sh/wiki/Run-acme.sh-in-docker"<strong🐳 Docker Guide</strong</a • <a href="https://twitter.com/neilpangxa"<strong🐦 Twitter</strong</a </p
---
🌏 中文说明
---
🏆 Who Uses acme.sh?
- FreeBSD.org
- ruby-china.org
- Proxmox
- pfsense
- Loadbalancer.org
- discourse.org
- Centminmod
- splynx
- opnsense.org
- CentOS Web Panel
- lnmp.org
- more...
---