# SSL_ERROR_NO_CYPHER_OVERLAP：Firefox 没有共同的加密套件

> SSL_ERROR_NO_CYPHER_OVERLAP 表示 Firefox 和服务器没有共同支持的加密套件。多是服务器套件列表过时，或 Firefox 设置被改过。

Source: https://ssl.sh/zh/errors/ssl-error-no-cypher-overlap/
Last updated: 2026-11-10

**SSL_ERROR_NO_CYPHER_OVERLAP 的意思是：Firefox 和服务器找不到一个双方都支持的加密套件。** 握手在第一步就停了。多数是服务器的套件列表过时或配错，有时是 Firefox 自己的套件设置被改过。

## 先判断是网站的问题还是你电脑的问题

服务器只开了弱套件是服务器的问题；服务器正常而只有你报错，就查 Firefox 的套件设置。用 [SSL 检测](https://ssl.sh/zh/tools/ssl-checker/) 看服务器的套件列表：

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

- **检测也协商失败，或者只列出了弱套件**：服务器要更新配置。
- **检测用现代套件连接正常**：查 Firefox。在 `about:config` 里搜索 `security.ssl3.`，看有没有加粗（被修改）且值为 `false` 的条目；再到 `about:policies` 看有没有禁用套件的企业策略，并用故障排除模式测试。

## 原因

这个报错有 5 种原因，共同点是服务器和 Firefox 找不到双方都支持的加密套件，例如服务器只提供 RC4、3DES 这类 Firefox 已不提供的套件。

### 1. 服务器只提供过时套件

照着老教程抄来的配置，可能只列了 RC4、3DES 等 Firefox 早已不再提供的套件。测试服务器接受什么：

```bash
openssl s_client -connect example.com:443 -servername example.com -tls1_2 \
  -cipher 'ECDHE+AESGCM:ECDHE+CHACHA20' </dev/null 2>&1 | grep -E "Cipher|alert"
```

这条失败、而服务器对别的请求有响应，就说明套件列表里缺现代套件。

### 2. 套件和证书类型对不上

ECDSA 证书却只开了 RSA 认证的 TLS 1.2 套件，或者反过来，都没有可用组合。两类都开上，或者依靠 TLS 1.3。

### 3. Firefox 套件设置被改过

一些“隐私加固”教程会通过 `security.ssl3.*` 关掉一批套件。关得太多，遇到只提供一两个套件的网站就会失败。

### 4. 老设备或嵌入式服务器

有的设备只实现了很少几个套件，只能靠固件更新解决。国内一些老款监控录像机、门禁控制器的网页后台就属于这种情况。

### 5. 拦截类产品套件有限

拦截 HTTPS 的代理设备提供给 Firefox 的套件列表，可能比真实服务器的窄得多。

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

Chrome 里对应的代码是 ERR_SSL_VERSION_OR_CIPHER_MISMATCH，curl 报 sslv3 alert handshake failure 或 no cipher match。

| 浏览器 | 显示内容 |
|---|---|
| Firefox | “建立安全连接失败”，代码 `SSL_ERROR_NO_CYPHER_OVERLAP` |
| Chrome / Edge / 360 / QQ 浏览器 | [ERR_SSL_VERSION_OR_CIPHER_MISMATCH](https://ssl.sh/zh/errors/err-ssl-version-or-cipher-mismatch/) |
| Safari | [Safari 无法建立安全连接](https://ssl.sh/zh/errors/safari-cant-establish-secure-connection/) |
| curl | `sslv3 alert handshake failure` 或 `no cipher match` |

## 站长怎么修

推荐配置是 TLS 1.2 用 ECDHE 加 AES-GCM 或 ChaCha20-Poly1305 套件，TLS 1.3 保留默认套件。

**1. 用当前推荐的套件配置。** Nginx 的 TLS 1.2 套件加 TLS 1.3 默认值：

```nginx
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;
```

宝塔面板的 SSL 配置里可以直接改加密套件；阿里云/腾讯云 CDN 和负载均衡选择较新的 TLS 安全策略即可，不需要手写套件。

**2. 不认识的套件名**先用 [加密套件查询](https://ssl.sh/zh/tools/cipher-suite-lookup/) 查一下，再决定保留还是删掉。

**3. 重载并验证。** 运行 `nginx -t && systemctl reload nginx`，再用 `curl ssl.sh/example.com` 确认协商出的是现代套件。
