Let‘s Encrypt 是什么?它是如何工作的?

Let's Encrypt 是一个开放且自动化的证书颁发机构(Certificate Authority,简称 CA),它使用 ACME 协议 (Automatic Certificate Management Environment,自动证书管理环境)为兼容的客户端提供免费的 TLS/SSL 证书。

这些证书可以用于加密你的 Web 服务器与访问者之间的通信,从而实现 HTTPS。Let's Encrypt 支持多种客户端工具,由不同的编程语言编写,并且可以与流行的服务、管理工具及服务器集成。

目前最流行的 Let's Encrypt 客户端是 Certbot ,它由 Electronic Frontier Foundation(电子前沿基金会) 负责开发。Certbot 不仅用于验证域名所有权和获取证书,还可以自动为 Apache 和 Nginx Web 服务器配置 TLS/SSL。

证书颁发机构是什么?

证书颁发机构(CA) 是一种通过加密签名来证明 TLS/SSL 证书真实性的实体。浏览器和操作系统维护一份受信任的 CA 列表,用来验证网站证书的有效性。

在 Let's Encrypt 出现之前,大多数 CA 都是商业机构,它们通常对证书服务收费。而 Let's Encrypt 则是一个非盈利机构,旨在推广 HTTPS 网络安全,它采用完全自动化的流程,并通过赞助和捐助来支持运行成本,因此能够为用户免费提供证书。简直是大善人,点赞点赞!

Let's Encrypt 的工作原理

Let's Encrypt 使用的 ACME 协议 定义了客户端如何与 Let's Encrypt 服务器通信来:

  1. 请求证书;
  2. 验证域名所有权;
  3. 下载证书。

Let's Encrypt 提供的是 域名验证型证书,意味着颁发证书前它要确认请求来自真正控制该域名的人。它通过以下方式来实现:

  1. 向客户端发放一个唯一令牌(token);
  2. 客户端生成一个公钥,并将验证内容放在它所管理的 Web 服务器上;
  3. Let's Encrypt 的验证服务器访问该文件来检查是否正确;
  4. 如果验证通过,就会签署并颁发证书。

ACME 协议定义了多种验证方式,最常用的有:

  • HTTP 验证:客户端在 Web 服务器上创建一个特定路径的验证文件;
  • DNS 验证:客户端在 DNS TXT 记录中设置验证内容。

Certbot 客户端

Certbot 是目前最受欢迎的 Let's Encrypt 客户端程序。它包括在大多数主要 Linux 发行版的软件仓库中,并提供方便的自动配置功能。

要使用 Certbot 获取证书并更新 Apache 配置,只需执行:

bash 复制代码
sudo certbot --apache -d www.example.com

将进入 Certbot 交互模式:

  • 提示你回答一些问题;
  • 运行域名验证;
  • 下载证书;
  • 更新 Web 服务器配置;
  • 重新加载服务器。

成功后,你可以通过浏览器访问 https://www.example.com,此时浏览器地址栏会显示绿色锁标志,表示连接已加密且证书有效。

Let's Encrypt 颁发的证书有效期目前为 90 天 ,从 2028 年开始申请的 Let's Encrypt 证书有效期将缩短一半,从 90 天变为 45 天,因此设置自动续订非常重要。可以使用以下命令来续订服务器上的所有证书:

bash 复制代码
sudo certbot renew

建议将此命令加入到 crontab(定时任务) 中每天运行一次,这样证书将在到期前自动续订。对于使用 --apache--nginx 安装的证书,Certbot 还会在续订 SSL 证书后自动重新加载服务器。不得不说,考虑真周到呀!

其他 ACME 客户端

由于 ACME 协议是开放且文档完善的,因此出现了许多替代客户端:

  • 不同编程语言实现的客户端(例如 Go、Shell、Node.js 等);
  • 一些客户端可以在 非 root 权限下 运行;
  • 支持自动通过 DNS API 创建 TXT 记录来完成挑战;
  • 有的客户端直接集成到了 Web 服务器或反向代理中,使证书自动获取更简单。

一些受欢迎的 ACME 客户端示例包括:

  • lego:用 Go 编写的单文件二进制客户端;
  • acme.sh:使用 shell 脚本实现,可在非特权环境运行;
  • Caddy:一个完整的 Go 语言 Web 服务器,内置 Let's Encrypt 支持。

小结

本文介绍了 Let's Encrypt 的基本概念及其工作原理,并简要介绍了 Certbot 与其他 ACME 客户端。想要了解如何将 Let's Encrypt 与特定软件结合使用(例如 Nginx 或 Apache),可以参考 GetIoT.tech 相应的教程示例。

相关链接

相关推荐
天天喝旺仔12 小时前
分布式服务容错实战:用 Sentinel 实现限流、熔断与降级
分布式·微服务·云原生·sentinel
Lsetea14 小时前
部署证书后提示“证书名称与输入不匹配”:Safari 报错的三层排查
nginx·https·safari·ssl证书·openssl
逐流人15 小时前
Containerd容器管理实战:从架构原理到nerdctlcrictl工具链
linux·运维·云原生·容器·云计算·containerd
事界见闻1 天前
多电平变换器实时仿真怎么选?微秒级解算与多机拓展下的技术评估与方案分析
云计算
运维开发王义杰1 天前
跨项目直连数据库:是架构反模式,还是现实的工程妥协?
云原生
闲云野鹤在人间1 天前
docker 入门 | 第7章 容器监控 和 第8章 容器日志 详解
运维·docker·容器·架构·云计算
云边云科技_云网融合1 天前
从一盘散棋到一张蓝图:某连锁集团的云上重构
网络·科技·云计算
小葱运维2 天前
日志规范(K8s 结构化日志)
运维·开源·云计算
其实防守也摸鱼2 天前
DeepSeek Harness 开源贡献手记:从入门到合入主线
服务器·数据库·windows·https·ssl
Akamai中国2 天前
Akamai Valkey 托管数据库:企业 AI 的实时内存解决方案
人工智能·云计算·云服务