acme.sh 一键部署SSL证书脚本

acme.sh 是一个开源的 ACME 协议客户端,用于自动获取和续签 Let's Encrypt 等证书颁发机构(CA)的 SSL/TLS 证书。相比于其他工具,它无需依赖任何系统包,并且支持多种 DNS 提供商,能以多种方式验证域名所有权,在 Linux 服务器上被广泛使用。下面为你详细介绍其使用方法:

1. 安装 acme.sh

在终端执行以下命令即可完成安装:
 
curl https://get.acme.sh | sh -s email=your_email@example.com
上述命令中的 your_email@example.com 需替换为你自己的邮箱地址,该邮箱用于接收证书相关的通知。

 

安装完成后,acme.sh 会自动添加到系统环境变量中,并且会创建一个定时任务来自动续签证书。

2. 配置 DNS API(可选)

若要使用 DNS 验证方式(适用于通配符证书或其他复杂场景),需要配置相应 DNS 提供商的 API 密钥。以阿里云为例,需设置以下环境变量:
export Ali_Key="your_aliyun_access_key"
export Ali_Secret="your_aliyun_access_secret"
你需要将 your_aliyun_access_key 和 your_aliyun_access_secret 替换为自己阿里云账户的 Access Key 和 Secret。

3. 获取证书

3.1 HTTP 验证方式

如果你的网站已经可以通过 HTTP 访问,可使用 HTTP 验证方式获取证书,命令如下:
 
acme.sh --issue -d example.com -d www.example.com --webroot /path/to/your/webroot
这里的 example.com 和 www.example.com 是你要获取证书的域名,/path/to/your/webroot 是网站的根目录。

3.2 DNS 验证方式

若要获取通配符证书或者网站无法通过 HTTP 访问,可使用 DNS 验证方式,示例命令如下:
 
acme.sh --issue --dns dns_ali -d example.com -d "*.example.com"
其中,dns_ali 表示使用阿里云的 DNS 验证,example.com 和 *.example.com 分别是主域名和通配符域名。

4. 安装证书到 Nginx

获取证书后,需要将其安装到 Nginx 服务器上,命令如下:
 
acme.sh --install-cert -d example.com \
--key-file       /etc/nginx/ssl/example.com.key  \
--fullchain-file /etc/nginx/ssl/fullchain.crt \
--reloadcmd     "service nginx force-reload"
上述命令中,/etc/nginx/ssl/example.com.key 和 /etc/nginx/ssl/fullchain.crt 是证书文件的保存路径,service nginx force-reload 是重新加载 Nginx 配置的命令。

5. 自动续签

acme.sh 会自动创建一个定时任务来检查证书的有效期,并在证书即将到期时自动续签。你可以手动测试续签功能:acme.sh --cron --home "$(dirname "$(readlink -f "$(which acme.sh)")")"

6. 其他常用命令

  • 查看证书列表:
 
acme.sh --list
  • 删除证书:
 
acme.sh --revoke -d example.com
acme.sh --remove -d example.com
 
通过以上步骤,你可以使用 acme.sh 自动获取、安装和续签 SSL/TLS 证书。
posted @ 2025-04-24 11:34  知风阁  阅读(143)  评论(0)    收藏  举报