文档首页> 常见问题> Let's Encrypt证书如何申请?

Let's Encrypt证书如何申请?

发布时间:2025-12-10 04:01       

Let's Encrypt 证书申请全攻略:从零到一的免费HTTPS部署指南

为什么选择Let's Encrypt?

在当今互联网环境中,HTTPS加密已成为网站安全与用户体验的标配。Let's Encrypt作为一家非营利性证书颁发机构(CA),自2015年推出以来彻底改变了SSL/TLS证书的获取方式。其核心优势在于:完全免费、自动化部署、支持泛域名证书,并且被所有主流浏览器信任。对于个人站长、中小企业和开发者而言,使用Let's Encrypt是实现网站HTTPS化的最经济高效的选择。

申请前的准备工作

在开始申请之前,请确保您已满足以下基本条件:

  • 域名所有权:您必须拥有要申请证书的域名控制权
  • 服务器访问权限:能够通过SSH登录到托管网站的服务器
  • 开放端口:确保服务器的80或443端口可从公网访问(用于域名验证)
  • 基础命令行操作能力:熟悉基本的Linux命令

值得注意的是,Let's Encrypt证书的有效期为90天,但官方鼓励自动化续期,因此实际使用中可以做到"一次设置,长期有效"。

四种主流申请方法详解

方法一:使用Certbot客户端(官方推荐)

Certbot是Let's Encrypt官方推荐的自动化客户端,支持大多数Web服务器和操作系统。

# 安装Certbot(以Ubuntu + Nginx为例)
sudo apt update
sudo apt install certbot python3-certbot-nginx

# 申请并自动配置证书
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

# 仅申请证书不修改配置
sudo certbot certonly --nginx -d yourdomain.com

Certbot会引导您完成整个流程,包括邮箱注册、域名验证等。申请成功后,证书通常保存在/etc/letsencrypt/live/yourdomain.com/目录下。

方法二:使用acme.sh脚本(轻量级方案)

acme.sh是一个纯Shell脚本,依赖少,功能强大,特别适合资源有限的环境。

# 安装acme.sh
curl https://get.acme.sh | sh

# 设置别名或重新加载shell配置
source ~/.bashrc

# 使用DNS API申请证书(以Cloudflare为例)
export CF_Key="your_cloudflare_api_key"
export CF_Email="your_email@example.com"
acme.sh --issue --dns dns_cf -d yourdomain.com -d *.yourdomain.com

acme.sh支持80多种DNS提供商API,对于需要泛域名证书的用户特别友好。

方法三:Web服务器插件自动申请

如果您使用cPanel、Plesk等控制面板,或WordPress等CMS,可能有集成的申请方式:

  • cPanel:在SSL/TLS功能中找到"Let's Encrypt™ SSL"选项
  • WordPress:使用"Really Simple SSL"等插件一键部署
  • 宝塔面板:在网站设置中直接点击SSL证书申请

方法四:手动申请(适合高级用户)

手动申请虽然步骤繁琐,但有助于理解证书申请的工作原理:

  1. 生成私钥和证书签名请求(CSR)
  2. 使用ACME客户端与Let's Encrypt服务器通信
  3. 完成域名所有权验证(HTTP或DNS验证)
  4. 下载并安装颁发的证书

域名验证方式对比

验证方式 工作原理 适用场景 优缺点
HTTP验证 在网站根目录创建特定验证文件 可直接访问Web服务器的情况 简单直接,但需要开放80端口
DNS验证 添加特定的TXT记录到域名DNS 无法直接访问服务器或需要泛域名证书 支持泛域名,但需要API权限或手动操作
TLS-ALPN验证 通过443端口进行验证 80端口被占用的情况 要求开放443端口,相对较少使用

证书安装与配置

获得证书文件后,需要正确配置Web服务器:

Nginx配置示例:

server {
    listen 443 ssl http2;
    server_name yourdomain.com www.yourdomain.com;
    
    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
    
    # 安全增强配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:...
    ssl_prefer_server_ciphers off;
}

Apache配置示例:


    ServerName yourdomain.com
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/yourdomain.com/chain.pem

自动化续期设置

Let's Encrypt证书90天有效期的设计初衷是鼓励自动化。以下是设置自动续期的方法:

Certbot自动续期:

# 测试续期命令是否正常工作
sudo certbot renew --dry-run

# 添加定时任务(每天检查两次)
sudo crontab -e
# 添加以下行:
0 */12 * * * /usr/bin/certbot renew --quiet

acme.sh自动续期:

acme.sh安装时会自动创建续期任务,无需额外配置。您可以通过以下命令查看:

crontab -l | grep acme.sh

常见问题与解决方案

1. 申请失败:Too many certificates already issued

原因:Let's Encrypt对每个域名有申请频率限制(每周最多50张证书)

解决方案:等待限制重置或使用已有的证书

2. 验证失败:Connection refused

原因:Let's Encrypt验证服务器无法访问您的网站

解决方案:检查防火墙设置,确保80或443端口可被外部访问

3. 续期失败:Certificate not yet due for renewal

原因:证书距离到期时间超过30天时不会续期

解决方案:这是正常现象,到期前30天内会自动续期

4. 混合内容警告

原因:网站页面中仍包含HTTP资源链接

解决方案:使用相对协议或强制HTTPS,更新所有资源链接

高级技巧与最佳实践

  1. 使用OCSP Stapling:减少证书验证时间,提升性能
  2. 配置HSTS:强制浏览器使用HTTPS连接
  3. 备份私钥:定期备份/etc/letsencrypt目录
  4. 监控证书状态:使用监控工具检查证书到期时间
  5. 多域名证书:一张证书包含多个域名,简化管理

结语

Let's Encrypt的出现极大降低了HTTPS部署的门槛,使每个网站都能轻松获得安全加密。虽然初始设置可能需要一些技术操作,但一旦完成自动化配置,后续维护成本极低。随着HTTP/2和未来HTTP/3的普及,HTTPS不再是可选项而是必选项。现在就开始行动,为您的网站部署Let's Encrypt证书,迈向更安全、更快速的网络新时代。

无论您是技术新手还是资深运维,本文提供的多种方法和详细步骤都能帮助您成功申请并管理Let's Encrypt证书。如果在实际操作中遇到问题,Let's Encrypt社区和各大技术论坛都有丰富的资源可供参考。