# PR_END_OF_FILE_ERROR：Firefox 握手时连接被断开

> Firefox 报 PR_END_OF_FILE_ERROR 时，怎么判断断开连接的是本机代理、安全软件、被改过的 TLS 首选项还是服务器，以及站长侧的排查步骤。

Source: https://ssl.sh/zh/errors/pr-end-of-file-error/
Last updated: 2026-11-10

**PR_END_OF_FILE_ERROR 的意思是：TLS 握手还没完成，连接就被关掉了。** 断开连接的通常是你电脑上的代理或安全软件，也可能是服务器本身。

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

外部检测也失败，是服务器的问题；外部正常，问题在本机或本地网络。用 [SSL 检测](https://ssl.sh/zh/tools/ssl-checker/) 从外部测：

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

- **检测也握手失败**：服务器或它的防火墙在断开连接，联系网站方。
- **检测正常，而且 Firefox 里别的网站也报**：问题在本地。按下面的顺序检查 Firefox 的代理设置、安全软件和首选项。
- **检测正常，只有你访问这个网站失败**：你所在的网络可能在拦截或干扰这个地址，换个网络试试。

## 原因

5 种原因里只有第 4 种在服务器一侧，其余都出在你的电脑上，最常见的是 Firefox 代理设置、安全软件或 VPN。

### 1. Firefox 的代理设置

Firefox 可以用自己的代理配置。手动填的代理已经不存在了，或者 PAC 文件加载失败，连接就会被切断。打开“设置 → 常规 → 网络设置”，改成“使用系统代理设置”或“不使用代理”测试。

### 2. 安全软件或 VPN 客户端

杀毒软件的 HTTPS 扫描、家长控制、上网管控客户端、VPN 和加速器都夹在 TLS 中间，出 bug 或服务断开时就会关掉连接。暂停 HTTPS 扫描或断开 VPN 测试，然后升级软件。见 [杀毒软件 HTTPS 扫描](https://ssl.sh/zh/errors/antivirus-https-scanning-ssl-error/)。

### 3. TLS 首选项被改过

改过 `security.tls.version.*`，或者禁用了 `security.ssl3.*` 套件，Firefox 提供的东西服务器不接受，有的服务器会直接关闭连接。在 `about:config` 里把这些名字下加粗（已修改）的条目重置。

### 4. 服务器或防火墙关闭握手

有些服务器和负载均衡在协议或套件谈不拢、或者防火墙规则拦截客户端时，直接断开 TCP 连接，而不是发送正常的 TLS 告警。在服务器侧检查：

```bash
openssl s_client -connect example.com:443 -servername example.com -brief </dev/null
```

出现 `unexpected eof` 或 `connection reset`，就指向服务器或它所在的网络。

### 5. 配置文件损坏

损坏的配置文件也会导致 TLS 失败，但很少见。在 `about:profiles` 新建配置文件测试。

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

Chrome 系浏览器把同一个问题报成 ERR_SSL_PROTOCOL_ERROR 或 ERR_CONNECTION_CLOSED，Safari 报无法建立安全连接。

| 浏览器 | 显示内容 |
|---|---|
| Firefox | “建立安全连接失败”，连接到 example.com 时发生错误，代码 `PR_END_OF_FILE_ERROR` |
| Chrome / Edge / 360 / QQ 浏览器 | [ERR_SSL_PROTOCOL_ERROR](https://ssl.sh/zh/errors/err-ssl-protocol-error/) 或 `ERR_CONNECTION_CLOSED` |
| Safari | [Safari 无法建立安全连接](https://ssl.sh/zh/errors/safari-cant-establish-secure-connection/) |
| curl | `unexpected eof while reading` 或 `Connection reset by peer` |

## 站长怎么修

站长要让服务器能完成握手，并排除防火墙、WAF 和连接数上限主动断连。

**1. 让服务器能完成握手。** 开启 TLS 1.2 和 1.3 及现代套件，[TLS 配置生成器](https://ssl.sh/zh/tools/tls-config-generator/) 能给出经过测试的配置。

**2. 检查防火墙、WAF 和限流规则。** 云服务器的安全组、Web 应用防火墙、宝塔的防火墙插件，都可能按地区或频率重置某些客户端的连接。对照报错时间查看它们的日志。

**3. 注意资源上限。** TLS 终止服务的 worker 数或连接数上限太低，高峰时新握手会被丢掉。

**4. 从外部验证。** 用 `curl ssl.sh/example.com` 并从多个网络测试。只有某一个客户网络失败，就收集它的 IP 段，对照防火墙规则排查。
