运维123 - Let's Encrypt
type: channel
link: https://www.sddts.cn/index.php/category/Let-s-Encrypt/
description: Let's Encrypt
items: Let's Encrypt 交叉签名：免费兼容老系统的策略分析
items: ACME DNS 验证与自定义递归服务器作用分析

Let's Encrypt 交叉签名：免费兼容老系统的策略分析
type: item
date: 2026-02-04T21:22:10+00:00
description: Let's Encrypt 交叉签名：免费兼容老系统的策略分析一、概述1. 背景Let's Encrypt 作为互联网上最大的免费证书颁发机构，其成功不仅体现在免费提供 SSL/TLS 证书，更体现在通过创新的交叉签名策略，解决了新 CA 面临的信任分发难题，实现了零成本兼容老系统。2. 核心问题新成立的证书颁发机构面临的核心挑战是：其根证书尚未被操作系统和浏览器广泛信任。若无法解决此问题，即使用户获得了 Let's Encrypt 颁发的证书，老设备仍会显示证书错误。3. 解决方案概述Let's Encrypt 与 IdenTrust 合作，通过交叉签名技术，使自己的中间证书同时被 Let's Encrypt 自有的 ISRG Root X1 和 IdenTrust 广受信任的 DST Root CA X3 签名，从而实现双路径信任验证。二、交叉签名技术原理1. 基本概念交叉签名是一种证书信任机制，允许一个证书被多个根证书签名。这意味着客户端可以通过任何一条有效路径验证证书链，从而扩大兼容性范围。2. Let's Encrypt 的实现架构graph TD A[用户网站证书] -->|被签发| B[R3 中间证书] B -->|路径1| C[ISRG Root X1 Let's Encrypt 自有根 有效期至 2035] B -->|路径2| D[DST Root CA X3 IdenTrust 根 已过期] style D fill:#f9f,stroke:#333,stroke-width:2px style C fill:#bbf,stroke:#333,stroke-width:1px架构说明：R3 中间证书同时拥有两个签名路径 1：通向 Let's Encrypt 的自有根证书 ISRG Root X1路径 2：通向 IdenTrust 的 DST Root CA X3（已于 2021 年 9 月 30 日过期）3. 验证流程sequenceDiagram participant C as 客户端浏览器 participant S as HTTPS 服务器 participant I as 中间证书 R3 C->>S: 发起 HTTPS 连接 S-->>C: 返回证书链 C->>I: 验证证书链 alt 老设备（2016年前） I->>I: 使用 DST Root CA X3 路径验证 I-->>C: 验证成功（2021年前） else 现代设备 I->>I: 使用 ISRG Root X1 路径验证 I-->>C: 验证成功 end三、经济效益分析1. 传统 CA 成本结构传统证书颁发机构建立信任需要：向现有根 CA 购买交叉签名：数十万至数百万美元申请加入各大操作系统和浏览器的信任根程序：耗时数年维护根证书基础设施：高昂的运营成本2. Let's Encrypt 的零成本策略Let's Encrypt 通过以下方式实现零成本交叉签名：策略说明效果公益合作与 IdenTrust 达成公益性质的合作协议无需支付授权费用非排他性交叉签名不限制 Let's Encrypt 发展自有根保持独立性期限约定约定特定的交叉签名有效期明确过渡期3. 商业模式创新Let's Encrypt 的交叉签名策略证明了免费 CA 的可持续性：降低行业准入门槛推动 HTTPS 全网普及建立公益化的互联网基础设施四、时间线与演进1. 发展历程timeline title Let's Encrypt 交叉签名策略时间线 2015 : Let's Encrypt 成立 获得 ISRG Root X1 2015 : 与 IdenTrust 达成 交叉签名协议 2016-2020 : DST Root CA X3 交叉签名 保障老设备兼容 2021-09 : DST Root CA X3 过期 交叉签名失效 2024-06 : 停止提供任何交叉签名链 全面转向 ISRG Root X12. 关键节点2015 年：Let's Encrypt 与 IdenTrust 签署交叉签名协议2016 年：开始大规模颁发证书，交叉签名发挥作用2021 年 9 月 30 日：DST Root CA X3 根证书过期2024 年 6 月：Let's Encrypt 完全停止交叉签名服务五、兼容性影响1. 受影响的系统DST Root CA X3 交叉签名过期后，以下设备受到影响：设备类型受影响版本原因Android7.1.1 及更早版本未包含 ISRG Root X1Windows XP所有版本证书存储已过时macOS10.12.1 及更早版本未信任 ISRG Root X1iOS10 及更早版本根证书存储未更新Ubuntu14.04 及更早版本系统证书库过时2. …

ACME DNS 验证与自定义递归服务器作用分析
type: item
date: 2026-01-29T07:49:35+00:00
description: ACME DNS 验证与自定义递归服务器作用分析一、问题背景1. 核心疑问在使用 acme.sh 的 DNS 验证方式申请域名证书时，用户可以指定自定义的递归 DNS 服务器。这引发了一个疑问：ACME 服务器是通过互联网的公共 DNS 进行域名验证的，用户指定的 DNS 服务器能起到什么作用？2. 涉及组件ACME 协议：自动化证书管理环境协议acme.sh：Shell 脚本实现的 ACME 客户端DNS 验证：ACME 挑战-响应验证方式之一递归 DNS 服务器：负责递归查询域名解析的服务器二、ACME DNS 验证机制1. 验证流程概述sequenceDiagram participant Client as acme.sh 客户端 participant DNS as DNS 服务商 participant Propagation as DNS 传播 participant ACME as ACME 服务器 (Let's Encrypt) participant PublicDNS as 公共 DNS Client->>DNS: 1. 申请证书 Client->>DNS: 2. 添加 TXT 记录 _acme-challenge.example.com DNS-->>Client: 确认添加成功 Note over Client,ACME: 等待 DNS 传播完成 Client->>PublicDNS: 3. 轮询检测 TXT 记录 (使用指定 DNS 服务器) PublicDNS-->>Client: 仍不可见 Client->>PublicDNS: 继续轮询... PublicDNS-->>Client: 记录已可见 Client->>ACME: 4. 通知 ACME 服务器验证 ACME->>PublicDNS: 5. 从多个位置查询 TXT 记录 PublicDNS-->>ACME: 返回 TXT 记录值 ACME-->>Client: 6. 验证通过，颁发证书 Client->>DNS: 7. 清理 TXT 记录2. ACME 服务器的验证行为A. 多位置验证ACME 服务器（如 Let's Encrypt）从全球多个位置验证 DNS 记录：验证源分布：美国、欧洲、亚太等地使用的 DNS：公共递归服务器（如 Google 8.8.8.8、Cloudflare 1.1.1.1）验证逻辑：必须从多个位置都能查询到正确的 TXT 记录B. 权威性验证路径ACME 服务器 → 公共递归 DNS → 权威 DNS → DNS 记录验证关键点：ACME 服务器不使用用户指定的 DNS 服务器进行验证。三、自定义 DNS 服务器的作用1. 本地预检测机制用户指定的 DNS 服务器仅用于 acme.sh 本地的预检测，不影响 ACME 服务器的验证过程。A. 问题场景时间轴： T0: 用户添加 TXT 记录到 DNS 服务商 T1: DNS 服务商更新权威记录 T2: 记录传播到部分 DNS 服务器 T3: 记录全球可见 acme.sh 在 T2 时刻触发验证 → ACME 服务器可能看不到记录 → 验证失败B. 解决方案# 方式 1：固定等待时间（粗暴） acme.sh --issue --dns dns_cf -d example.com --dnssleep 120 # 方式 2：指定 DNS 服务器进行智能检测 export ACME_DNS_SERVER="8.8.8.8" acme.sh --issue --dns dns_cf -d example.com2. 工作原理对比graph TB subgraph "方式 1：固定等待" A1[添加 TXT 记录] -->|等待 120 秒| B1[触发 ACME 验证] B1 --> C1{ACME 服务器查询} C1 -->|成功| D1[颁发证书] C1 -->|失败| E1[重试] end subgraph "方式 2：智能检测" A2[添加 TXT 记录] -->|轮询检测| B2[使用指定 DNS 查询] B2 -->|未检测到| B2 B2 -->|检测到| C2[触发 ACME 验证] C2 --> D2[颁发证书] end3. 具体配置示例A. 使用公共递归 DNS# 使用 Google DNS 进行预检测 export ACME_DNS_SERVER="8.8.8.8:53" # 使用 Cloudflare DNS export ACME_DNS_SERVER="1.1.1.1:53" # 使用国内 DNS（加速检测） export ACME_DNS_SERVER="223.5.5.5:53"B. 使用权威 DNS# 直接查询权威 DNS 服务器，…