# 多视角域名验证（MPIC）成为 CA 强制要求

> SC-067v3 要求 CA 从多个网络位置验证域名控制权和 CAA，2025 年 3 月起分阶段实施；只放行国内 IP 的防火墙可能导致 HTTP-01 验证失败。

Source: https://ssl.sh/zh/news/mpic-multi-perspective-validation-required/
Last updated: 2026-11-10

从 2025 年 3 月 15 日起，公开信任的 CA 在签发证书前，必须从多个不同的网络位置确认域名控制权和 [CAA](https://ssl.sh/zh/glossary/caa/) 记录，而不是只从自己的机房查一次。这项要求叫“多视角签发佐证”，即 [MPIC](https://ssl.sh/zh/glossary/mpic/)，来自 CA/B 论坛的 SC-067v3 投票，分阶段实施到 2026 年 12 月。目的是防止攻击者用 BGP 劫持等手段在局部截获验证流量，冒领别人域名的证书。

## 发生了什么

CA/B 论坛在 2024 年 8 月通过了 SC-067v3。按照修改后的 [Baseline Requirements](https://ssl.sh/zh/glossary/baseline-requirements/)，CA 在主验证点完成[域名验证](https://ssl.sh/zh/glossary/dcv/)和 CAA 查询之后，还要由一组远程网络视角重复同样的检查，并且要有足够多的视角得出一致结论。分阶段要求如下：

| 日期 | 要求 |
|---|---|
| 2025-03-15 | 至少 2 个远程视角；未达成多数一致时 CA 仍可签发 |
| 2025-09-15 | 多数一致成为硬性要求 |
| 2026-03-15 | 至少 3 个远程视角，分布在至少 2 个 RIR 区域 |
| 2026-06-15 | 至少 4 个远程视角 |
| 2026-12-15（尚未生效） | 至少 5 个远程视角 |

各视角之间至少相距 500 公里。RIR 区域指五大地区互联网注册机构（ARIN、RIPE NCC、APNIC、LACNIC、AFRINIC）各自的服务范围。也就是说，验证请求一定会来自不止一个大洲。

## 影响谁

普通站长一般感觉不到 MPIC，但它改变了验证流量的来源，下面几类配置最容易出问题：

- **[HTTP-01](https://ssl.sh/zh/glossary/http-01/) 验证**：CA 会从多个网络去访问 `/.well-known/acme-challenge/` 下的验证文件。国内不少服务器在云安全组、宝塔面板防火墙或 WAF 上设置了“只允许中国大陆 IP”或屏蔽境外访问，这样一来部分视角访问失败，订单就会被拒绝。
- **[DNS-01](https://ssl.sh/zh/glossary/dns-01/) 验证**：TXT 记录必须在全球解析结果一致。如果开启了按地区返回不同结果的智能解析，或者 DNS 服务对境外查询限速、丢包，就可能出现视角之间结论不一致。
- **[TLS-ALPN-01](https://ssl.sh/zh/glossary/tls-alpn-01/) 验证**：同样要求 443 端口能被多个地区访问到。
- **CAA 记录**：CAA 查询也要多视角确认，只在部分地区可见的 CAA 记录可能直接导致无法签发。

Let's Encrypt 不公布固定的验证 IP 列表，MPIC 之后靠 IP 白名单放行验证流量就更不现实了。

## 需要做什么

让 80 端口的验证路径对所有来源开放（其余请求仍可跳转到 HTTPS）；如果 80 端口必须对境外关闭，就改用 DNS-01。国内用户可以用 acme.sh 配合阿里云解析或 DNSPod 的 API 自动添加 TXT 记录，例如：

```bash
export Ali_Key="<AccessKey ID>"
export Ali_Secret="<AccessKey Secret>"
acme.sh --issue --dns dns_ali -d example.com -d '*.example.com'
```

然后检查相关记录在不同网络下是否一致：

```bash
curl -sI http://example.com/.well-known/acme-challenge/test
dig +short CAA example.com
dig +short TXT _acme-challenge.example.com @223.5.5.5
dig +short TXT _acme-challenge.example.com @8.8.8.8
```

第一条命令返回 404 没关系，超时或连接被重置才是问题。如果签发时报连接超时，参考 [certbot 连接超时](https://ssl.sh/zh/errors/certbot-timeout-during-connect/)；如果被 CAA 拦截，参考 [CAA 记录阻止签发](https://ssl.sh/zh/errors/caa-record-prevents-issuance/)。可以用 [CAA 检测工具](https://ssl.sh/zh/tools/caa-checker/)查看域名授权了哪些 CA，[CAA 记录指南](https://ssl.sh/zh/learn/caa-records/)讲解了具体写法。
