ssl/tls证书申请
acme.sh 是一个用 Shell(bash/sh)编写的轻量级 ACME 客户端,用于自动向 Let’s Encrypt 等 CA(证书颁发机构)申请、更新、安装和管理 SSL/TLS 证书。[1]
ACME = Automatic Certificate Management Environment(自动证书管理环境协议)
它是目前最流行、最轻量的 ACME 客户端之一,功能上类似于 Certbot,但更加灵活、便携、无依赖。
官方网站: https://acme.sh
GitHub: https://github.com/acmesh-official/acme.sh
安装
note:建议使用root账户,因为acme还可以直接安装证书,很多系统服务的证书可能需要root权限来安装。或者使用普通用户的话, 要有免密使用一些sudo命令的权限。
1 | |
如果用普通账户:
1 | |
申请证书
推荐使用let’s encrypt的证书,acme默认使用zerossl,但是zerossl需要注册账号
1 | |
可以使用 HTTP 验证(适用于能访问80端口的主机):
1 | |
或者使用 DNS 验证(适合在阿里云、Cloudflare等DNS上托管的域名):
1 | |
首次使用 DNS 插件前,需要配置 ~/.acme.sh/account.conf 中的 Ali_Key 和 Ali_Secret或者export到环境变量中,然后acme会自动保存到account.conf里。
申请的证书会保存在~/.acme.sh/example.com,会产生四个文件
1 | |
查看已经申请的证书
1 | |
安装证书
可以直接用acme安装证书,这样以后更新证书可以自动把证书放到对应的位置并重启服务。
1 | |
安装后如果acme更新了临期证书,会自动重新安装。
证书自动更新
1 | |
强制更新
可以强制acme更新一次证书
1 | |
--renew:尝试续期证书-d example.com:指定域名--force:忽略过期时间限制,立即执行续期
强制更新之后原来的证书其实还是有效的,直到过期为止
删除证书
1 | |
执行后,会删除:
~/.acme.sh/example.com/下的证书文件(包括 key、fullchain 等)- 与该域名相关的配置文件(包含
Le_ReloadCmd、Le_KeyFile、Le_FullChain等)
但是不会删除已经安装过去的证书。
References
- chatgpt.com ↩