资讯动态

使用 Let’s Encrypt 免费申请泛域名 SSL 证书,并实现自动续期

发布时间:2026/8/27 7:51:49 来源:尧图企业网站定制
环境准备在开始之前确保你具备以下条件一台可以访问互联网的服务器Linux 环境如 Ubuntu/CentOS。Root权限或sudo权限。一个已解析的域名本文以example.com为例关于Let’s EncryptLet’s Encrypt是一个免费的、自动化的、开放的证书颁发机构CA提供免费 SSL 证书。它的目标是让所有网站都能轻松实现 HTTPS 加密保障用户数据的安全。通过Let’s Encrypt你可以为你的主域名、子域名甚至泛域名配置安全证书而且过程完全自动化不需要手动申请和管理证书官方推荐使用 Certbot。Certbot工作流程Certbot 是一个自动化工具用于为网站部署和管理 HTTPS 证书SSL/TLS 证书。其核心工作原理基于ACME 协议Automated Certificate Management Environment主要步骤如下1.初始化客户端如 Certbot向 Let’s Encrypt 注册账户生成公私钥对公钥用于身份验证。2.域名验证在申请证书之前Let’s Encrypt 必须验证你对所申请域名的控制权。这是通过以下几种方式进行的HTTP-01 验证Let’s Encrypt 向你请求创建一个特定的文件并放在你网站的指定路径下。它通过访问该文件来验证你是否控制该域名。DNS-01 验证Let’s Encrypt 提供一条 DNS TXT 记录要求你将其添加到域名的 DNS 设置中。它通过检查 DNS 记录来验证你对域名的控制权。TLS-ALPN-01验证通过 TLS 握手时的扩展协议验证Apache、Nginx 或 Certbot 短期內都不支持这种验证方式。对于泛域名证书必须使用DNS-01验证方式因为 HTTP 验证不能跨域名层级进行。3.证书申请和签发一旦验证成功客户端如Certbot生成公私钥对并将CSR证书签名请求发给CA如Let’s Encrypt CA会生成一个 SSL 证书并将其发放给申请者。这个证书包含了公钥、域名、有效期等信息任何人都可以通过该证书与网站进行安全通信。证书通常包括域名证书cert.pem私钥文件privkey.pem中间 CA 证书链chain.pem4. 证书部署certbot支持证书的自动部署如果使用的nginx或者apache的默认配置方式可以增加--nginx/apache配置选项实现自动部署。当然也可以选择手动部署也很方便。5.自动续期Let’s Encrypt 的证书有效期为90 天因此需要定期续期。Certbot 自动进行续期验证确保你的网站不会因为证书过期而遭到用户的安全警告。安装CertbotCertbot是由Electronic Frontier Foundation (EFF)提供的一个开源工具用于自动化从 Let’s Encrypt 获取和管理 SSL 证书。Certbot 会自动为你处理证书申请、安装和续期等过程。Linux 系统推荐使用 Linux 的 snapd包管理工具安装Certbot支持snapd后可以使用如下命令安装Certbot。sudo snap install --classic certbot #安装Certbot sudo ln -s /snap/bin/certbot /usr/local/bin/certbot #创建一个符号链接确保可以执行certbot命令相当于快捷方式其它系统平台参考Certbot官网单域名SSL证书申请证书如果你只需要为单个域名如example.com和www.example.com申请证书可以使用以下命令sudo certbot -d example.com -d www.example.com如果还有子域名如api.example.com可以在指令上继续增加-d api.example.com。安装并配置证书经过上面指令一般会显示你申请成功的提示并显示证书存储的路径。默认路径为/etc/letsencrypt/live/域名/。使用以下命令查看证书详细信息sudo certbot certificatesnginx配置示例server { listen 80; server_name example.com www.example.com; location / { return 301 https://$host$request_uri; } } server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # 默认的ssl推荐配置 include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; location / { proxy_pass http://127.0.0.1:8080; } # 如果配置的是静态网站这里应是你的网站根目录 # location / { # root /html; # index index.html index.htm; # try_files $uri $uri/ 404; # } }如果需要自动配置增加--nginx。--nginx 需要服务器预先安装nginxcertbot获取到证书后会自动通过修改nginx的配置将证书安装到nginx上。--------没试过自动续期Let’s Encrypt 证书的有效期为90 天为了避免证书过期我们可以使用Cron Job设置自动续期。首先你可以手动测试续期是否正常# 首先你可以手动测试续期是否正常 sudo certbot renew --dry-run # 如果没有报错可以继续配置自动续期任务 sudo crontab -e # 在打开的编辑器中添加以下行表示每10天凌晨 2 点执行自动续期任务 0 2 */10 * * /usr/bin/certbot renew --quiet # --quiet 参数表示静默模式不会输出非错误信息。一般使用这样就够了。泛域名SSL证书申请证书泛域名证书Wildcard Certificate可以为同一主域名下的所有子域名提供 HTTPS 支持。例如*.example.com可以覆盖blog.example.com、api.example.com等子域名。Let’s Encrypt 要求通过DNS-01验证来申请泛域名证书。运行以下命令sudo certbot certonly --manual --preferred-challenges dns -d *.example.com -d example.comCertbot 会要求你在 DNS 中创建一个特定的TXT 记录记录以验证域名的所有权。_acme-challenge.example.com IN TXT certbot给出的随机字符串前往你的域名 DNS 管理页面添加该记录后返回命令行按下Enter。如图大概等几十秒钟确保 DNS 记录在全网传播开来Certbot 可以查询到。Certbot 在执行验证时会发起 DNS 查询如果能找到所需的 TXT 记录并验证其值认证就会成功然后就会颁发证书。证书颁发后这条TXT 记录就可以删除了。这个是手动添加删除 DNS 对应的 TXT 记录这里只是演示Certbot颁发证书的过程实际情况下最好采用自动化脚本添加和删除 DNS 的 TXT 解析记录。安装并配置证书与之前单域名类似自动续费自动续费需要使用脚本用于处理DNS-01验证的 DNS 记录添加和删除请参考这篇文章没有验证过。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价