本文将介绍使用 acme.sh 配置签发以及自动续签 SSL 证书。
安装 acme.sh
acme.sh 是一个集成了 ACME 客户端协议的 Bash 脚本,按照官方文档说明,我们直接在 Linux 下安装。
后面的email参数填写你的邮箱,与申请证书相关的信息将会发到这个邮箱地址
curl https://get.acme.sh | sh -s [email protected]
注意:如果安装完成后提示 -bash: acme.sh: command not found
,需要手动执行 source ~/.bashrc
使用 HTTP 验证签发证书
首先我们要做一下准备工作,假设你域名是 example.com
,解析到你的服务器让其生效后,我们建立一个目录用于申请证书时验证网站所有权:
mkdir -p /var/www/letsencrypt
如果你使用的是Nginx,那么你需要在对应站点的Nginx配置中加入.well-known/acme-challenge
页面的映射
server {
listen 80;
listen [::]:80;
server_name example.com;
location /.well-known/acme-challenge {
root /var/www/letsencrypt;
}
}
我们以 Let's Encrypt 为例,直接在终端运行
acme.sh --issue -d example.com -w /var/www/letsencrypt
当你看到以下日志时,证明证书申请完成
root@debian:~/.acme.sh# acme.sh --issue -d example.com -w /var/www/letsencrypt
[Sat 03 May 2025 11:44:03 AM EDT] Using CA: https://acme-v02.api.letsencrypt.org/directory
[Sat 03 May 2025 11:44:04 AM EDT] Single domain='example.com'
[Sat 03 May 2025 11:44:06 AM EDT] Getting webroot for domain='example.com'
[Sat 03 May 2025 11:44:06 AM EDT] Verifying: example.com
[Sat 03 May 2025 11:44:07 AM EDT] Pending. The CA is processing your order, please wait. (1/30)
[Sat 03 May 2025 11:44:10 AM EDT] Success
[Sat 03 May 2025 11:44:11 AM EDT] Verification finished, beginning signing.
执行完成后,日志会显示证书存放的位置,此时你可以在Nginx配置里安装对应证书
ssl_certificate /data/ca/fullchain.pem; # 域名证书路径
ssl_certificate_key /data/ca/key.pem; # 域名私钥路径
这里需要注意把得到的证书和私钥文件后缀改为.pem格式,否则Nginx无法正常启动
acme.sh官方文档
这里给出acme.sh官方的中文文档,可供参考
地址:https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E