关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

在外网服务器上使用Let's Encrypt免费SSL证书的自动化部署与续期

发布时间:2025-04-14


  在当今互联网环境中,为网站启用HTTPS加密已不再是可选项,而是保障数据传输安全、提升用户信任度、甚至影响搜索引擎排名的基本要求。Let's Encrypt是一个免费、开放、自动化的证书颁发机构(CA),它极大地降低了获取和部署SSL/TLS证书的门槛。对于在外网服务器上託管网站或服务的用户来说,利用Let's Encrypt获取免费证书,并通过自动化工具(如Certbot)实现证书的部署和自动续期,是实现全站HTTPS的最经济、高效的方式之一。

  Let's Encrypt与ACME协议

  - Let's Encrypt: 由ISRG(互联网安全研究小组)运营的公益性证书颁发机构,提供免费的域验证(Domain Validated, DV)SSL/TLS证书。

  - ACME协议 (Automated Certificate Management Environment): Let's Encrypt使用的自动化协议,允许客户端软件(如Certbot)自动完成域名所有权验证、证书申请、下载和安装过程。

  - 证书有效期: Let's Encrypt颁发的证书有效期为90天,旨在鼓励自动化续期。

  核心工具:Certbot

  Certbot是由电子前哨基金会(EFF)开发和维护的、最常用也最推荐的ACME客户端软件。它可以自动化完成Let's Encrypt证书的获取、部署(支持Nginx和Apache自动配置)和续期。

  在外网服务器上使用Certbot实现自动化

  1. 安装Certbot:

  - 推荐使用snap安装(如果系统支持): Snap包通常包含所有依赖,更新方便。

  Bash

  sudo snap install --classic certbot

  sudo ln -s /snap/bin/certbot /usr/bin/certbot

  - 或者使用包管理器安装(注意版本可能较旧):Bash

  # Ubuntu/Debian

  sudo apt update && sudo apt install certbot python3-certbot-nginx (或 python3-certbot-apache) -y

  # CentOS/RHEL (可能需要EPEL源)

  sudo yum install epel-release -y

  sudo yum install certbot python3-certbot-nginx (或 python3-certbot-apache) -y

  2. 获取并安装证书:

  - 针对Nginx:Bash

  sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com (可添加多个域名)

  Certbot会自动检测Nginx配置文件中的server_name指令,与您提供的域名进行匹配,然后:

  - 执行HTTP-01验证(自动在Nginx中配置临时路径用于验证)。

  - 获取证书。

  - 修改Nginx配置文件,添加SSL相关指令(证书路径、协议、加密套件等),并通常会设置HTTP到HTTPS的自动跳转。

  - 重载Nginx使配置生效。

  - 针对Apache:Bash

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

  - 仅获取证书(手动配置Web服务器):Bash

  sudo certbot certonly --webroot -w /var/www/html -d yourdomain.com -d www.yourdomain.com

  # -w 指定网站根目录,Certbot会在该目录下创建临时验证文件

  # 或者使用 --standalone 模式,Certbot会临时启动一个Web服务器监听80端口进行验证(需要先停掉现有Web服务器)

  获取证书后,需要手动编辑Nginx或Apache的配置文件,添加ssl_certificate和ssl_certificate_key等指令指向Certbot生成的证书文件(通常在/etc/letsencrypt/live/yourdomain.com/下)。

  3. 域名验证方式 (Challenges):

  - HTTP-01(默认常用): Certbot在您的Web服务器根目录下放置一个特殊文件,Let's Encrypt服务器通过HTTP访问该文件来验证您对域名的控制权。要求服务器的80端口必须能从公网访问。

  - DNS-01: Certbot要求您在域名的DNS记录中添加一个特定的TXT记录,Let's Encrypt服务器查询该DNS记录来验证域名所有权。

  - 优势: 不需要服务器公网IP或开放端口,是获取通配符证书(*.yourdomain.com)的唯一方式。

  - 劣势: 需要您的DNS提供商支持API自动更新DNS记录(Certbot有许多DNS插件支持主流DNS服务商如Cloudflare, GoDaddy, DNSPod等),或者需要手动去修改DNS记录(不方便自动化)。

  - 使用方法示例(使用Cloudflare插件):Bash

  sudo apt install python3-certbot-dns-cloudflare # 或snap安装时已包含

  sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini -d yourdomain.com -d '*.yourdomain.com'

  # 需要先配置好cloudflare.ini包含API Token

  4. 自动续期(核心):

  - Certbot自动设置: 在安装证书时,Certbot通常会自动在系统的定时任务(cron或systemd timer)中添加一个每天运行两次的续期检查任务。

  - 测试自动续期: 可以使用sudo certbot renew --dry-run命令模拟续期过程,检查自动续期设置是否正常。

  - 续期逻辑: 续期任务会检查所有已安装的Let's Encrypt证书,对有效期少于30天的证书尝试进行续期。续期成功后,如果使用了--nginx或--apache插件,Certbot会自动重载Web服务器使新证书生效。如果手动配置的Web服务器,可能需要在续期成功后添加--deploy-hook来执行重载命令。

  - 确保续期任务运行: 检查crontab -l或systemctl list-timers确认Certbot的续期任务已配置并处于活动状态。

  在外网服务器部署的注意事项:

  - 防火牆/安全组: 确保服务器的80端口(HTTP-01验证)或/和443端口(HTTPS服务)允许公网入站访问。DNS-01验证无需开放端口。

  - 域名解析: 确保您的域名已正确解析到外网服务器的公网IP地址。

  - 速率限制: Let's Encrypt对证书申请有速率限制(例如,每个注册域名每周颁发证书数量限制),避免频繁失败的尝试。

  - 证书透明度 (Certificate Transparency): 所有Let's Encrypt颁发的证书都会被记录在公共的证书透明度日志中。

  利用Let's Encrypt和Certbot,在外网服务器上实现HTTPS加密变得前所未有的简单和经济。通过自动化的部署和续期,您可以轻鬆地为您的网站或服务提供必要的安全保障,提升用户信任,而无需承担传统商业SSL证书的费用和繁琐的手动管理流程。务必确保您的自动续期机制正常工作,避免因证书过期导致服务中断。

  一万网络专业提供外网服务器租用/外网云服务器/外网服务器/外网vps/外网原生ip/外网虚拟主机/外网服务器地址(全国统一服务热线:4000-968-869)。



上一篇:外网服务器选择中“无限流量”套餐的真实限制解读

下一篇:外网服务器时钟同步(NTP)的重要性与配置实践