浏览器
SEC_ERROR_REUSED_ISSUER_AND_SERIAL:证书序列号重复怎么办
SEC_ERROR_REUSED_ISSUER_AND_SERIALSEC_ERROR_REUSED_ISSUER_AND_SERIAL 的意思是:Firefox 已经记住了一张签发者、序列号都和眼前这张相同、内容却不同的证书。 这违反了 X.509 的规则,Firefox 因此拒绝连接。实际情况几乎都是:路由器、NAS 或测试服务器重新生成了自签名证书,却沿用了同一个序列号,而 Firefox 还记着旧的那张。
先判断是网站的问题还是你电脑的问题
两边都有责任:设备生成了序列号重复的证书,你的 Firefox 配置文件又存着上一张。如果是公网主机,用 SSL 检测 查一下:
curl ssl.sh/example.com
公开信任的证书不应该出现这个问题,因为公开 CA 必须使用唯一的随机序列号。如果是你自家网络里的设备,在本地处理就是安全的。
原因
最常见的原因是光猫、家用路由器、NAS 重新生成自签名证书时沿用了固定序列号,另外 3 种情况也都和自签名或内部证书有关。
1. 设备重新生成了自签名证书
固件升级、恢复出厂、改主机名之后,很多设备会用同样的签发者名称和固定序列号(常见 0、1、1000)生成新证书,而 Firefox 里还存着以前加例外时的旧证书。查看序列号:
echo | openssl s_client -connect 203.0.113.10:443 2>/dev/null | openssl x509 -noout -serial -issuer -dates
2. 多台设备出厂证书一模一样
同型号的两台设备可能出厂证书的签发者和序列号相同,密钥却不同。两台都访问过就会触发这个错误。
3. 测试证书用了固定序列号
每次都用 -set_serial 1 生成证书的脚本会产生重复,新测试证书总和上一张冲突。
4. 内部 CA 的序列号计数器乱了
恢复了 CA 备份或重置了序列号文件,可能会重复签发已经用过的序列号。
在各浏览器/系统上的样子
只有 Firefox 会报这个代码,Chrome、Edge 和 Safari 通常只显示普通的自签名证书警告。
| 浏览器 | 显示内容 |
|---|---|
| Firefox | “建立安全连接失败”,说明证书与该 CA 签发的另一张证书序列号相同,代码 SEC_ERROR_REUSED_ISSUER_AND_SERIAL |
| Chrome / Edge / 360 / QQ 浏览器 | 通常只是普通的自签名警告(NET::ERR_CERT_AUTHORITY_INVALID) |
| Safari | 自签名证书对应的“此连接非私人连接” |
站长怎么修
给设备换一张随机序列号的证书能解决所有人的问题;清除 Firefox 里的旧证书只解决这一个浏览器。
1. 清除 Firefox 里存的旧证书。 设置 → 隐私与安全 → 证书 → 查看证书,在“服务器”“证书颁发机构”“其他”几个选项卡里找以设备名或 IP 命名的条目,删除后刷新。
2. 给设备换一张随机序列号的证书。 不指定 -set_serial 时,OpenSSL 默认使用随机序列号:
openssl req -x509 -newkey rsa:2048 -nodes -days 365 \
-keyout router.key -out router.crt -subj "/CN=router.example.com" \
-addext "subjectAltName=DNS:router.example.com,IP:203.0.113.10"
自签名证书生成器 生成的证书同样带随机序列号。
3. 更好的办法: 给设备起一个真实域名,用 DNS 验证申请公开信任的证书,自签名警告和序列号冲突就都没了。用 证书解析 确认新证书的序列号是一串很长的随机数。
常见问题
SEC_ERROR_REUSED_ISSUER_AND_SERIAL 危险吗?
通常不危险。出现在你自己的路由器或 NAS 上,只是设备重新生成了自签名证书。公开网站出现这个错误就很不寻常,应该反馈给站长,因为公开 CA 必须使用唯一的随机序列号。
为什么 Chrome、Edge 能打开同一个页面?
它们不会像 Firefox 那样长期保存以前见过的自签名证书,所以序列号重复也不会和已存储的证书冲突。
删掉 cert9.db 能解决吗?
能,但会把这个 Firefox 配置文件里存的所有证书和例外一起删掉。只在“查看证书”里删除那一条更精准。