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重新加载。

相关推荐
码云数智-大飞5 小时前
C++ RAII机制:资源管理的“自动化”哲学
java·服务器·php
SkyXZ~5 小时前
Jetson有Jtop,Linux有Htop,RDK也有Dtop!
linux·运维·服务器·rdkx5·rdks100·dtop
黑牛儿6 小时前
MySQL 索引实战详解:从创建到优化,彻底解决查询慢问题
服务器·数据库·后端·mysql
starvapour7 小时前
Ubuntu系统下基于终端的音频相关命令
linux·ubuntu·音视频
杨云龙UP7 小时前
Oracle Data Pump实战:expdp/impdp常用参数与导入导出命令整理_20260406
linux·运维·服务器·数据库·oracle
浪客灿心7 小时前
线程同步与互斥
linux
想唱rap7 小时前
线程池以及读写问题
服务器·数据库·c++·mysql·ubuntu
萌萌哒草头将军9 小时前
CloudDock(云仓):新一代开源NAS网络代理工具
服务器·网络协议·docker
牛马鸡niumasi9 小时前
C/C++ 程序编译过程、静态/动态链接、静态/动态库
linux
捧月华如10 小时前
Linux 系统性能压测工具全景指南(含工程实战)
linux·运维·服务器