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
2
3
curl https://get.acme.sh | sh
export PATH="$HOME/.acme.sh":$PATH
acme.sh -v

如果用普通账户:

1
2
3
sudo visudo
# /etc/sudoers
loginname ALL:(ALL) NOPASSWD:ALL

申请证书

推荐使用let’s encrypt的证书,acme默认使用zerossl,但是zerossl需要注册账号

1
acme.sh --set-default-ca --server letsencrypt

可以使用 HTTP 验证(适用于能访问80端口的主机):

1
acme.sh --issue -d example.com -d www.example.com -w /var/www/html

或者使用 DNS 验证(适合在阿里云、Cloudflare等DNS上托管的域名):

1
acme.sh --issue --dns dns_ali -d example.com -d www.example.com

首次使用 DNS 插件前,需要配置 ~/.acme.sh/account.conf 中的 Ali_KeyAli_Secret或者export到环境变量中,然后acme会自动保存到account.conf里。

申请的证书会保存在~/.acme.sh/example.com,会产生四个文件

1
2
3
4
5
ls ~/.acme.sh/example.com
example.com.cer # 证书文件
example.com.key # 私钥
ca.cer # 中间证书
fullchain.cer # 完整证书链

查看已经申请的证书

1
acme.sh --list

安装证书

可以直接用acme安装证书,这样以后更新证书可以自动把证书放到对应的位置并重启服务。

1
2
3
4
5
6
acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/example.com.key \
--fullchain-file /etc/nginx/ssl/example.com.crt \
--reloadcmd "systemctl reload nginx"
# 三个选项分别是:密钥文件安装位置,证书文件安装位置,安装完执行的重新加载命令
#(所以执行acme的用户要是root或者能直接执行systemctl的用户)

安装后如果acme更新了临期证书,会自动重新安装。

证书自动更新

1
2
3
4
5
6
# 查看定时任务
crontab -l
# 应该会有如下结果:
53 18 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
# 如果没有定时任务,执行安装
acme.sh --install-cronjob

强制更新

可以强制acme更新一次证书

1
acme.sh --renew -d example.com --force
  • --renew:尝试续期证书

  • -d example.com:指定域名

  • --force:忽略过期时间限制,立即执行续期

强制更新之后原来的证书其实还是有效的,直到过期为止

删除证书

1
acme.sh --remove -d example.com

执行后,会删除:

  1. ~/.acme.sh/example.com/ 下的证书文件(包括 key、fullchain 等)
  2. 与该域名相关的配置文件(包含 Le_ReloadCmdLe_KeyFileLe_FullChain 等)

但是不会删除已经安装过去的证书。

References

  1. chatgpt.com

ssl/tls证书申请
http://zr4in.github.io/2025/11/10/ssl-tls证书申请/
作者
zr4in
发布于
2025年11月10日
许可协议