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 相应的教程示例。

相关链接

相关推荐
陈天伟教授4 小时前
华为云 阿里云 腾讯 WorkBuddy的工具对比
阿里云·华为云·云计算
人间凡尔赛5 小时前
AI-Native 云原生架构:2026 年从容器编排到智能体编排的范式革命
后端·云原生·架构
Dawn-bit5 小时前
Linux救援模式和系统恢复
linux·运维·服务器·云计算·运维开发
AOwhisky6 小时前
Python 学习笔记(第五期)——组合数据类型:列表、元组、集合与字典精讲——核心知识点自测与详解
开发语言·笔记·python·学习·云计算
Database_Cool_8 小时前
阿里云 RDS MySQL 降本增效实战:从规格选型到成本优化,月成本降低64%全攻略
mysql·阿里云·云计算
Linux-187415 小时前
分布式链路追踪系统之docker-compose安装skywalking
云原生·docker-compose·skywalking·分布式链路追踪系统·应用程序性能监控
Smoothcloud润云18 小时前
国内GPU算力租赁平台横向测评:资源、成本、稳定性三维对比
人工智能·ai·云计算·gpu算力·gpu
隔窗听雨眠21 小时前
Spring Boot在云原生时代的编程范式革新研究
spring boot·后端·云原生
Hui Baby1 天前
K8S使用CRD和控制器简单应用
云原生·容器·kubernetes
阿里云云原生1 天前
从“告警驱动”到“巡检驱动”:Agent 智能体如何实现前端体验治理的闭环?
云原生