HTTPS免费证书:Let’s Encrypt申请与自动续期

HTTPS免费证书:Let's Encrypt申请与自动续期

你给网站加HTTPS,跑去买证书。一年几百块,心疼。不买吧,Chrome地址栏那个“不安全”的红标,看着就别扭。

其实不用花钱。Let’s Encrypt,全球最大的免费CA机构,提供90天有效期的SSL证书。你只需要一个自动化工具Certbot,全程自动申请、自动配置、自动续期。

今天带你配好它。


Let’s Encrypt是什么?——免费、自动化、可信

Let’s Encrypt由Linux基金会、Google、Mozilla等多家组织发起,目标是加密整个互联网。颁发的免费证书被所有主流浏览器和操作系统信任。

原理:证书颁发机构需要验证你对域名的控制权。Let’s Encrypt的做法是,在你服务器上放一个临时文件,或者修改一条DNS记录,CA机构访问验证,通过后才发证。Certbot自动帮你完成这个流程。

90天有效期这么短,就是为了逼你自动化。你配好自动续期后,基本不用再管。


准备工作

需要三样东西:

  • 一台有公网IP的服务器(已配置好域名解析)
  • 已经安装并运行了Nginx或Apache
  • 服务器的80端口能从外网访问(Let’s Encrypt验证域名时需要)

确认域名已指向服务器IP:

bash

ping 你的域名

如果返回的IP是服务器的公网IP,就对了。


安装Certbot

Certbot是Let’s Encrypt官方推荐的自动化客户端,支持Nginx和Apache。

Ubuntu/Debian

bash

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

CentOS/RHEL

bash

sudo yum install epel-release -y
sudo yum install certbot python3-certbot-nginx -y

验证安装:certbot --version


申请证书(Nginx版)

Certbot会自动读取Nginx配置、修改配置文件、启用HTTPS。

bash

sudo certbot --nginx -d example.com -d www.example.com

-d后面跟域名,可以多个。

运行后会问几个问题:

  • 输入邮箱(用于接收到期通知)
  • 同意服务条款
  • 是否自动重定向HTTP到HTTPS(选2,自动重定向)

完成之后,Certbot会:

  1. 自动验证域名所有权
  2. 申请证书
  3. 自动修改Nginx配置,启用SSL
  4. 设置HTTP自动跳转HTTPS

打开浏览器访问https://你的域名,看到锁标志说明成功了。


申请证书(Apache版)

bash

sudo certbot --apache -d example.com -d www.example.com

其他流程和Nginx版一样,Certbot会自动修改Apache配置。


证书存放位置

申请成功后,证书文件在/etc/letsencrypt/live/你的域名/

文件说明
fullchain.pem服务器证书+中间证书(Nginx用这个)
privkey.pem私钥文件
cert.pem仅服务器证书
chain.pem仅中间证书

Nginx配置里引用这两个:

nginx

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

Certbot已经帮你自动改好了,不需要手动配。


自动续期

Let’s Encrypt证书有效期90天。Certbot自带自动续期功能。

测试续期是否正常

bash

sudo certbot renew --dry-run

如果输出包含The dry run was successful,说明续期配置正确。

Certbot会自动创建cron定时任务,每天检查两次,证书到期前30天内自动续期。

检查cron任务:

bash

systemctl list-timers | grep certbot

如果存在certbot.timer,说明自动续期已生效。

手动续期

bash

sudo certbot renew

这个命令会检查所有证书,只续期30天内到期的,不到期的不动。


自定义配置与问题处理

泛域名证书

certbot certonly --manual --preferred-challenges dns -d *.example.com -d example.com

需要手动添加DNS TXT记录验证域名所有权,适合多子域名场景。

证书不自动重载

续期成功后,Nginx/Apache需要重载才能使用新证书。Certbot默认会尝试重载,如果失败,在续期命令后加--post-hook

bash

sudo certbot renew --post-hook "systemctl reload nginx"

或者在/etc/letsencrypt/renewal/域名.conf里加上:

ini

[renewalparams]
renew_hook = systemctl reload nginx

防火墙没开443端口

证书配好了,但外网访问不了HTTPS。检查防火墙:

bash

sudo ufw allow 443/tcp
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload

证书过期没续期

检查cron日志:grep certbot /var/log/syslog。常见原因是服务器时间不准,或防火墙阻止了Let’s Encrypt的出站连接。


一个真实案例

一个朋友的博客,以前用付费证书,每年续费麻烦。换了Let’s Encrypt,certbot自动续期,已经跑了两年没手动操作过。

他说:“以前经常忘记续费,到期了网站打不开用户骂。现在再也没这回事了。”


最后一句

Let’s Encrypt + Certbot,是目前最省心的免费HTTPS方案。

你有域名、有服务器、会敲几行命令,就能给你的网站加把锁。浏览器地址栏的“不安全”红标会变成一把绿色的锁。用户更信任你,搜索引擎更喜欢你。

今天就去申请一个。免费的,不花钱。

知识库

Nginx配置优化:提高并发量的7个参数

2026-5-15 18:22:55

首页

从“数据副本”到“业务时间线”:现代容灾如何用不可变架构重写恢复规则?

2026-1-4 12:30:25

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧