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

相关链接

相关推荐
SaaS_Product19 分钟前
安全、协作、存储三个维度测评:Zoho网盘和OneDrive
人工智能·云计算·saas·onedrive
2501_9159184130 分钟前
基于Mach-O文件的动态库与静态库归属方案及API扫描实践
android·ios·小程序·https·uni-app·iphone·webview
2501_9151063234 分钟前
iOS 证书无法跨电脑使用?签名迁移方法一文讲透
android·ios·小程序·https·uni-app·iphone·webview
风向决定发型丶1 小时前
K8S readinessGates详解
云原生·容器·kubernetes
风向决定发型丶1 小时前
K8S中podManagementPolicy和updateStrategy的关系
云原生·容器·kubernetes
TG_yunshuguoji1 小时前
阿里云渠道商:百炼模型调优实战 5 步完成高效训练
人工智能·机器学习·阿里云·云计算
程序员一点1 小时前
第22章:openEuler 与云计算集成
云计算·cpu
__zRainy__1 小时前
使用 OpenSSL 创建本地开发环境受信任的 HTTPS 证书
网络协议·http·https
AI周红伟11 小时前
周红伟:《OpenClaw安全防控:OpenClaw++Skills智能体安全部署、实操和企业应用实操》
人工智能·阿里云·云计算·腾讯云·openclaw
一叶飘零_sweeeet12 小时前
服务注册发现深度拆解:Nacos vs Eureka 核心原理、架构选型与生产落地
微服务·云原生·eureka·nacos·架构·注册中心