使用 acme.sh 快速部署 HTTPS 证书指南

本文将详细介绍如何使用 acme.sh 工具为新的域名快速部署 Let’s Encrypt 的免费 HTTPS 证书,并自动配置 Nginx 实现无缝更新与重载。

为什么选择 acme.sh?

在开始之前,让我们先了解一下为什么推荐使用 acme.sh 来管理 HTTPS 证书:

🎯 核心优势

  1. 全自动续期:Let’s Encrypt 证书有效期仅为 90 天,acme.sh 会自动在到期前 30 天续期,确保证书永不过期
  2. 零人工干预:一次配置后,完全自动化运行,无需手动操作
  3. 支持多种 DNS API:内置支持阿里云、腾讯云、Cloudflare 等 80+ DNS 服务商,实现 DNS 自动验证
  4. 轻量级纯 Shell 脚本:不依赖 Python 等重型运行时,安装简单,资源占用极小
  5. 生产环境验证:全球数百万用户在使用,稳定性经过充分验证
  6. 智能重载服务:证书更新后自动重载 Nginx/Apache 等服务,无需手动干预

💡 与传统方式对比

特性acme.shCertbot手动申请
自动续期✅ 内置✅ 需要配置 cron
DNS API 支持✅ 80+ 家⚠️ 部分支持
安装复杂度⭐ 简单⭐⭐ 中等⭐⭐⭐ 复杂
资源占用⭐ 极低⭐⭐ 较高-
自动重载✅ 支持⚠️ 需配置

使用 acme.sh,您可以彻底告别证书过期的烦恼,将更多精力投入到业务开发中。接下来,让我们开始正式部署。

准备工作

前置条件

  1. 拥有一个有效的域名:确保您的域名已经解析到服务器 IP。
  2. 安装 Nginx:确保您已经在服务器上安装了 Nginx 并能够正常运行。
  3. 阿里云账户:由于我们将通过阿里云 DNS API 自动验证域名所有权,因此需要拥有一个阿里云账户,并且域名需托管在阿里云 DNS 下。

安装依赖

首先,我们需要安装 socatcurl(如果尚未安装):

sudo apt-get update && sudo apt-get install socat curl -y

步骤一:安装 acme.sh

执行以下命令来安装 acme.sh:

curl https://get.acme.sh | sh -s email=your_email@example.com

安装完成后,重新加载 shell 配置文件或新开终端窗口使环境变量生效:

source ~/.bashrc

步骤二:配置阿里云 DNS API

创建 RAM 子账号并授予其 AliyunDNSFullAccess 权限,然后获取 AccessKey ID 和 Secret。

设置环境变量:

export Ali_Key="your_AccessKey_ID"
export Ali_Secret="your_AccessKey_Secret"

步骤三:申请证书

使用 -d 参数指定您要申请证书的主域名和所有子域名:

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

等待几分钟直到看到成功提示。

步骤四:安装证书并配置自动重载 Nginx

创建证书存储目录:

mkdir -p /etc/nginx/ssl/example.com

安装证书并设置自动重载 Nginx:

acme.sh --install-cert -d example.com \
  --key-file      /etc/nginx/ssl/example.com/example.com.key \
  --fullchain-file /etc/nginx/ssl/example.com/example.com.pem \
  --reloadcmd     "sudo systemctl reload nginx"

步骤五:配置 Nginx

编辑 Nginx 配置文件,通常位于 /etc/nginx/sites-available/default 或者单独的配置文件中:

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate /etc/nginx/ssl/example.com/example.com.pem;
    ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;

    location / {
        root /var/www/html;
        index index.html index.htm;
    }
}

保存更改后,测试 Nginx 配置是否正确:

sudo nginx -t

如果一切正常,重载 Nginx 以应用更改:

sudo systemctl reload nginx

结语

恭喜!您现在已经成功地为您的新域名部署了 HTTPS 证书,并设置了自动续期和 Nginx 重载。从现在起,您的网站将会更加安全可靠。


请根据实际情况调整上述内容中的具体命令参数,如域名、路径等,以匹配您的实际环境。希望这份指南对您的博客有所帮助!