FreeSSL实现域名证书免费无限自动续签续期流程

实现自动续期后,您完全不需要在证书临期时手动复制新的PEM文件到服务器并刷新配置。系统会在证书到期前自动完成续期、下载新证书、并重新加载Web服务器(如Nginx),整个过程无需人工干预。

一、FreeSSL免费证书自动续期完整流程

整个流程分为平台操作服务器配置 两部分,核心是使用ACME协议和acme.sh客户端。

第一步:在FreeSSL.cn平台获取部署命令
  1. 登录FreeSSL.cn,进入 "证书自动化" -> "域名授权"

  2. 点击 "添加" ,输入您的域名(支持通配符,如 *.example.com)。

  3. 选择验证方式(推荐DNS验证),平台会提供一个CNAME记录值。

  4. 前往您的域名服务商(如阿里云)的DNS解析控制台,添加这条CNAME记录。

  5. 返回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_certificatessl_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.shblog.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重新加载。

相关推荐
快乐的哈士奇11 分钟前
历史对话关联 RAG 上下文检索 — 内部技术介绍
服务器·数据库·oracle
windawdaysss14 分钟前
使用VMware Workstation Pro安装Ubuntu虚拟机教程
linux·运维·ubuntu
土星云SaturnCloud16 分钟前
32TOPS工业级算力+无风扇全密封!土星云SE110S-WA32边缘计算微服务器深度测评
服务器·人工智能·ai·边缘计算
宋浮檀s17 分钟前
Linux后门持久化排查
linux·运维·服务器
xuhaoyu_cpp_java18 分钟前
Linux学习(一)
linux·经验分享·笔记·学习
诗句藏于尽头18 分钟前
服务器入侵事件复盘:从发现到修复的完全指南
运维·服务器
小此方19 分钟前
Re: Linux系统篇(十八)进程篇·三:深度硬核!全面起底 Linux 进程状态变化与内核链表动态解绑
linux·驱动开发·链表
浮尘笔记2 小时前
Java Snowy框架CI/CD云效自动化部署流程
java·运维·服务器·阿里云·ci/cd·自动化
米高梅狮子9 小时前
03.网络类服务实践
linux·运维·服务器·网络·kubernetes·centos·openstack
June`9 小时前
网络编程时内核究竟做了什么???
linux·服务器·网络