实现自动续期后,您完全不需要在证书临期时手动复制新的PEM文件到服务器并刷新配置。系统会在证书到期前自动完成续期、下载新证书、并重新加载Web服务器(如Nginx),整个过程无需人工干预。
一、FreeSSL免费证书自动续期完整流程
整个流程分为平台操作 和服务器配置 两部分,核心是使用ACME协议和acme.sh客户端。
第一步:在FreeSSL.cn平台获取部署命令
-
登录FreeSSL.cn,进入 "证书自动化" -> "域名授权"。
-
点击 "添加" ,输入您的域名(支持通配符,如
*.example.com)。 -
选择验证方式(推荐DNS验证),平台会提供一个CNAME记录值。
-
前往您的域名服务商(如阿里云)的DNS解析控制台,添加这条CNAME记录。
-
返回FreeSSL平台,点击 "配置完成,立即检测" 。验证通过后,平台会生成一条专属的 ACME.sh申请证书命令,将其复制下来。
第二步:在您的服务器上安装并配置acme.sh
1.安装acme.sh客户端(以Linux服务器为例):
bash
curl https://get.acme.sh | sh -s email=your-email@example.com
安装完成后,关闭并重新打开SSH终端 ,以使acme.sh命令生效。
2.执行申请命令:
进入acme.sh目录,粘贴第一步复制的命令并执行:
bash
cd ~/.acme.sh
./acme.sh --issue -d yourdomain.com --dns dns_dp --server https://acme.freessl.cn/v2/DV90/directory/xxxxxxx
此命令会完成证书的申请和签发。
第三步:安装证书并配置Web服务器自动重载
1.将证书安装到指定目录(以Nginx为例):
bash
./acme.sh --install-cert -d yourdomain.com \
--key-file /path/to/your/key.pem \
--fullchain-file /path/to/your/cert.pem \
--reloadcmd "systemctl reload nginx"
请将 /path/to/your/替换为您希望存放证书的实际路径。
2.修改Nginx配置 ,将 ssl_certificate和 ssl_certificate_key指令指向上述路径。
二、自动续期如何工作?
-
定时任务 :
acme.sh安装时会自动创建一个Cron定时任务(通常每天运行一次),用于检查证书有效期。 -
自动触发 :当检测到证书剩余有效期不足30天时,定时任务会自动调用续期流程。
-
无缝更新 :续期成功获取新证书后,会自动执行您在
--reloadcmd中定义的命令(如systemctl reload nginx),使新证书立即生效,服务无需中断。
三、重要注意事项
1.域名解析记录 :在首次配置的DNS验证记录(CNAME)请勿删除,后续自动续期时仍需使用它来验证域名所有权。
2.检查定时任务 :安装后可以执行 crontab -l查看是否存在 acme.sh的定时任务,确保其正常运行。
3.手动测试续期 :您可以执行 acme.sh --renew -d yourdomain.com --dry-run来测试续期流程是否配置正确,而不会实际更新证书。
按照以上流程配置完成后,您就可以"一劳永逸",享受全自动的免费HTTPS证书管理了。
四、实操举例
注意:在创建新的Nginx配置文件时,您仍然需要明确指定SSL证书的路径。
原因说明:
1.职责分离:
acme.sh(自动续期工具)的职责 是:在证书到期前,自动从证书颁发机构(CA)获取新证书,并覆盖 您指定路径(如/etc/nginx/ssl/blog.com/)下的.pem和.key文件,然后执行reloadcmd重载Nginx。- Nginx配置文件的职责 是:明确告诉Nginx服务器,从哪里读取SSL证书和私钥文件,以启用HTTPS。
2.自动续期的便利性体现在:
- 文件自动更新 :您无需手动下载、复制、粘贴新的证书内容。
acme.sh会自动用新文件覆盖旧文件。 - 服务自动重载:通过
--reloadcmd参数,Nginx会自动重新加载配置,使新证书立即生效,服务无需重启。
五、为未来的新站点配置建议
当您为另一个新域名(例如 blog.com)配置HTTPS时,流程是类似的:
1.申请并安装证书 :使用acme.sh为blog.com申请证书,并使用--install-cert命令将其安装到新的、独立的目录,例如:
bash
./acme.sh --install-cert -d blog.com \
--key-file /etc/nginx/ssl/blog.com/blog.com.key \
--fullchain-file /etc/nginx/ssl/blog.com/blog.com.pem \
--reloadcmd "systemctl reload nginx"
2.创建Nginx配置文件 :为您的新站点(blog.com)创建一个新的配置文件(如/etc/nginx/conf.d/blog.conf)。必须包含以下关键部分:
- server_name指令后的域名。
- ssl_certificate和 ssl_certificate_key的路径,指向新域名的证书目录。
- location等块内的应用代理地址(如果需要)。
bash
server {
listen 443 ssl;
server_name blog.com; # 改为新域名
# SSL证书路径 ------ 必须改为新域名的证书路径!
ssl_certificate /etc/nginx/ssl/blog.com/blog.com.pem;
ssl_certificate_key /etc/nginx/ssl/blog.com/blog.com.key;
# ... 其他配置 ...
}
六、最佳实践总结
-
路径模板化 :为每个域名使用统一的路径格式,如
/etc/nginx/ssl/域名/域名.pem,便于管理。 -
一劳永逸 :每个域名只需在初次配置时,一次性完成
acme.sh安装证书和Nginx配置编写。之后该域名的证书更新将完全自动化。 -
检查配置 :每次新增或修改Nginx配置后,执行
nginx -t测试语法,确认无误后再systemctl reload nginx重新加载。