# “此证书不受信任”：macOS 钥匙串里怎么处理

> Mac 钥匙串访问显示“此证书不受信任”或“由未知颁发机构签名”，表示 macOS 连不到受信任的根证书。按公开网站、公司 CA 和开发证书分别处理。

Source: https://ssl.sh/zh/errors/macos-certificate-not-trusted/
Last updated: 2026-11-10

**“此证书不受信任”的意思是：macOS 无法把这张证书连到它信任的根证书，或者某个信任设置明确禁止了它。** 你会在钥匙串访问、从 Safari 或“邮件”打开的证书详情里看到它，间接表现就是 Safari 的“此连接非私人连接”。怎么修取决于这张证书属于公开网站、你们公司，还是你自己的开发环境。

## 先判断是网站的问题还是你设备的问题

公开网站检测出证书链有问题，就是网站要修；检测正常，问题在这台 Mac 的拦截软件或信任设置。公开网站先用 [SSL 检测](https://ssl.sh/zh/tools/ssl-checker/) 查：

```bash
curl ssl.sh/example.com
```

- **检测提示证书链有问题**：网站要修，不要在你的 Mac 上改信任设置。
- **检测正常**：对比 Mac 上看到的证书和检测结果。颁发者不同，说明被拦截了（杀毒软件、代理或描述文件）；证书相同，说明本地某个信任设置不对。

在 Mac 上可以用苹果自带的工具测试：

```bash
security verify-cert -c server.pem -p ssl -s example.com
```

## 原因

Mac 上最常见的原因是内部服务器和开发工具用了自签名或私有 CA 证书。

### 1. 自签名或私有 CA 证书

内部服务器和开发工具用的证书，根证书不在“系统根证书”钥匙串里。这是正常的：有意识地安装 CA 根证书，或者换成公开证书。

### 2. 缺中间证书

服务器只发了站点证书；macOS 通常会自己下载中间证书，但 AIA 地址访问不了时就不行。国内访问部分境外 CA 的 AIA 地址不稳定时容易出现。用 [证书链工具](https://ssl.sh/zh/tools/chain-builder/) 修好服务器的证书链。

### 3. 信任设置被改过

在钥匙串访问里被设成“永不信任”的根证书或中间证书，或者被描述文件限制，会覆盖系统默认值。

### 4. 证书不符合苹果的 TLS 规则

用于 TLS 时，macOS 要求证书有 SAN、RSA 密钥至少 2048 位、SHA-2 签名、EKU 含 serverAuth，并且有效期受限（2019 年 7 月 1 日后签发的证书不超过 825 天，2020 年 9 月 1 日后签发的公开证书不超过 398 天）。自己做的证书经常漏掉其中一条。

### 5. 拦截类软件

会检查 HTTPS 的安全工具把根证书装在“系统”钥匙串里。安装失败或被删掉后，被拦截的网站就显示为不受信任。

## 在各浏览器/系统上的样子

| 位置 | 显示内容 |
|---|---|
| 钥匙串访问 | 红色图标，“此证书不受信任”或“此根证书不受信任” |
| Safari | [“此连接非私人连接”](https://ssl.sh/zh/errors/safari-this-connection-is-not-private/) |
| 邮件 | 提示无法验证服务器身份 |
| Mac 上的 Chrome | [NET::ERR_CERT_AUTHORITY_INVALID](https://ssl.sh/zh/errors/net-err-cert-authority-invalid/) |

## 站长怎么修

修法取决于证书归属：公开网站修证书链，公司或开发用 CA 只信任根证书，不合规的证书重新签发。

**1. 公开网站**：使用公开 CA 的证书并发送完整证书链，用 `curl ssl.sh/example.com` 确认。

**2. 公司或开发用 CA**：信任根证书，而不是一张张服务器证书。在终端里：

```bash
sudo security add-trusted-cert -d -r trustRoot \
  -k /Library/Keychains/System.keychain company-root.crt
```

或者在钥匙串访问里双击根证书，展开“信任”，把“使用此证书时”设为“始终信任”。电脑多的话，用 MDM 描述文件统一下发。

**3. 不合规的证书重新签发**，满足苹果的要求，部署前用 [证书解析](https://ssl.sh/zh/tools/certificate-decoder/) 检查一遍。
