因为阿里云的免费证书只有三个月的有效期,每次更换都比较繁琐,所以找到了 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 ID 和 AccessKey Secret。

 
 可参考 创建RAM用户 帮助文档查看详细规则。
 
 
 
 创建用户账号后分配权限,选择 AliyunDNSFullAccess 为一个子用户授予完全管理云解析DNS 的权限。分配完成后会列表中会有复制按钮,需要保存你的 AccessKey ID 和 AccessKey Secret,之后无法获取。
详细步骤参考 子用户权限管理 帮助文档。
3. 配置阿里云 DNS
上一步获取到的 AccessKey ID 和 AccessKey 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