纯粹用 Shell(Unix shell)语言编写的 ACME 协议客户端。
完整的 ACME 协议实施。
支持ECDSA证书
支持SAN和通配符证书
简单、强大且非常易于使用。您只需要 3 分钟即可学会。
Bash、dash 和 sh 兼容。
纯粹用 Shell 编写,不依赖于 python。
只需一个脚本即可自动颁发、续订和安装您的证书。
不需要root/sudoer
访问权限。
Docker 准备就绪
IPv6 就绪
有关更新或错误等的 Cron 作业通知。
它可能是自动颁发和续订免费证书的easiest & smartest
shell 脚本。
维基:https://github.com/acmesh-official/acme.sh/wiki
对于 Docker 粉丝:acme.sh ?码头工人
推特:@neilpangxa
FreeBSD.org
红宝石中国网
普罗克斯莫克斯
普夫感
负载均衡器.org
discourse.org
中央管理软件
斯普林克斯
opnsense.org
CentOS 网页面板
lnmp.org
更多的...
不 | 地位 | 平台 |
---|---|---|
1 | 苹果电脑 | |
2 | Windows(包含curl、openssl和crontab的cygwin) | |
3 | 自由BSD | |
4 | 索拉里斯 | |
5 | 乌班图 | |
6 | 不适用 | 普夫感 |
7 | 开放BSD | |
8 | 网络BSD | |
9 | 蜻蜓BSD | |
10 | 奥姆尼奥斯 | |
11 | 德班 | |
12 | 中央操作系统 | |
13 | 开放SUSE | |
14 | Alpine Linux(带curl) | |
15 | ArchLinux | |
16 | 软呢帽 | |
17 号 | 卡利Linux | |
18 | 甲骨文Linux | |
19 | 马吉亚 | |
10 | Gentoo Linux | |
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 CA(默认)
Letscrypt.org CA
BuyPass.com CA
SSL.com CA
Google.com 公共 CA
Pebble 严格模式
任何其他符合 RFC8555 的 CA
网络根模式
独立模式
独立 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 [email protected]
尽管it is recommended
您成为 root,但您don't have to be root
。
高级安装: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
是托管网站文件的 Web 根文件夹。您必须具有对此文件夹的write access
。
第二个参数“example.com”是您要为其颁发证书的主域。您必须至少拥有一个域。
您必须将所有域指向并绑定到同一个 webroot 目录: /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 /path/to/certfile/in/apache/cert.pem --密钥文件/path/to/keyfile/in/apache/key.pem --fullchain-文件 /path/to/fullchain/certfile/apache/fullchain.pem --reloadcmd“服务apache2强制重新加载”
Nginx示例:
acme.sh --install-cert -d example.com --密钥文件/path/to/keyfile/in/nginx/key.pem --fullchain-文件/path/to/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 服务器交互)
如果您运行的是Web服务器,建议使用Webroot mode
。
特别是,如果您正在运行 Apache 服务器,则可以使用 Apache 模式。此模式不会将任何文件写入您的 Web 根文件夹。
只需将字符串“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 服务器交互)
如果您运行的是Web服务器,建议使用Webroot mode
。
特别是,如果您正在运行 nginx 服务器,则可以使用 nginx 模式。此模式不会将任何文件写入您的 Web 根文件夹。
只需将字符串“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访问,您可以手动添加txt记录。
acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com
您应该得到如下输出:
添加以下txt记录: 域名:_acme-challenge.example.com 文本值:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c 添加以下txt记录: 域名:_acme-challenge.www.example.com 文本值:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 请将这些 txt 记录添加到域中。等待dns生效。
然后只需使用renew
参数重新运行:
acme.sh --renew -d example.com
好的,完成了。
注意,这是dns手动模式,不能自动更新。当您续订证书时,您必须手动向您的域添加新的 txt 记录。
请改用dns api模式。
只需设置带有前缀ec-
keylength
参数即可。
例如:
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(RSA2048)
3072(RSA3072)
4096(RSA4096)
很简单,只需给出一个通配符域作为-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 --自动升级
然后acme.sh将自动保持最新。
禁用自动升级:
acme.sh --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
使用 shell 讲 ACME 语言,直接进行“Let's Encrypt”。
待办事项:
Acme-tiny:https://github.com/diafygi/acme-tiny
ACME协议:https://github.com/ietf-wg-acme/acme
这个项目的存在要感谢所有做出贡献的人。
成为财务贡献者并帮助我们维持我们的社区。 [贡献]
与您的组织一起支持该项目。您的徽标将显示在此处,并带有指向您网站的链接。 [贡献]
许可证是 GPLv3
请给我加星标和叉子。
欢迎提出问题和拉取请求。
您的捐赠使acme.sh变得更好:
PayPal/Alipay(支付宝)/Wechat(微信): https://donate.acme.sh/
捐赠名单