阿里云域名证书自动更新acme.sh

发布于:2025-04-12 ⋅ 阅读:(21) ⋅ 点赞:(0)

因为阿里云的免费证书只有三个月的有效期,每次更换都比较繁琐,所以找到了 acme.sh,还有一种 certbot 我没有去了解,就直接使用了 acme.sh 来更新证书,acme.sh 的主要特点就是:

  • 支持多种 DNS 服务商
  • 自动化续期
  • 直接指定证书路径

足以解决证书有效期问题。

1. 安装 acme.sh

如果尚未安装 acme.sh,切换到常用安装目录下通过以下命令安装,并加载环境变量和系统配置::

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

其他安装方式:

git clone https://gitee.com/neilpang/acme.sh.git
cd acme.sh
./acme.sh --install -m your_email@example.com
source ~/.bashrc

2. 获取阿里云 DNS API 密钥

登录阿里云控制台,进入 RAM 访问控制,创建一个具有 DNS 管理权限的子用户,并获取其 AccessKey IDAccessKey Secret



可参考 创建RAM用户 帮助文档查看详细规则。



在这里插入图片描述
创建用户账号后分配权限,选择 AliyunDNSFullAccess 为一个子用户授予完全管理云解析DNS 的权限。分配完成后会列表中会有复制按钮,需要保存你的 AccessKey IDAccessKey Secret,之后无法获取。

详细步骤参考 子用户权限管理 帮助文档。

3. 配置阿里云 DNS

上一步获取到的 AccessKey IDAccessKey Secret API 秘钥,配置到 acme.sh 中:

vim acme.sh
export Ali_Key="your_aliyun_access_key"
export Ali_Secret="your_aliyun_access_secret"

4. 申请 SSL 证书并自动续期

申请证书

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

创建证书存放目录

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

安装证书并设置自动更新

acme.sh --install-cert -d example.com \
  --certpath /etc/nginx/cert/example.com/cert.pem \
  --keypath /etc/nginx/cert/example.com/privkey.pem \
  --fullchainpath /etc/nginx/cert/example.com/fullchain.pem \
  --reloadcmd "systemctl reload nginx"

检查自动续期配置

crontab -l

acme 自动设置定时任务,定期检查并更新证书,无需手动操作。
在这里插入图片描述

5. 域名解析到当前服务器并修改nginx配置文件

阿里云域名解析到当前服务器:
在这里插入图片描述

server
{
        listen 80;
        server_name example.com;
        rewrite ^(.*) https://$host$1 permanent;
}

server {
        listen          443 ssl;
        server_name     example.com;
        root            /root/example.com/public_html/public;
        index           index.php index.html index.htm;

        ssl_certificate      /etc/nginx/cert/example.com/fullchain.pem;
        ssl_certificate_key  /etc/nginx/cert/example.com/privkey.pem;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

		...

}

6. acme常用命令

查看证书列表:

acme.sh --list
或
"/root/.acme.sh"/acme.sh --list

查看证书信息:

acme.sh --info -d example.com

手动续期证书:

acme.sh --renew -d example.com

删除证书

acme.sh --remove -d example.com

7. 注意事项

  • 证书默认有效期为 90 天,acme.sh 会自动续期。
  • 如果使用其他 DNS 服务商,需调整相应的 API 配置。
  • 更多详细配置参考官方文档

过程中遇到的问题

openssl 版本过低。

centos7|操作系统|升级openssl-1.0.2k到openssl-3.3.0