LetsEncrypt9月30日过期后Safari中Goaccess web socket连接失败
Goaccess SSL WebSocket Safari 报错 OSStatus Error -9807 解决方案
WebSocket network error: OSStatus Error -9807: Invalid certificate chain
出现该问题的核心原因是Goaccess配置的SSL证书链不完整,且不同浏览器的根证书信任逻辑存在差异:Firefox自带独立的根证书存储,优先信任LetsEncrypt新的ISRG Root X1根证书,因此可以正常连接;而Safari调用系统根证书存储,对证书链的完整性校验更严格,缺失中间证书或者携带了过期的DST Root CA X3根证书都会触发校验失败。
修复步骤
- 修正Goaccess的SSL证书配置
检查Goaccess启动参数中的--ssl-cert配置项,确认指向的是完整证书链文件而非单域名证书。以Certbot签发的证书为例,正确配置应该指向fullchain.pem而非cert.pem,示例正确启动参数:goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/goaccess/index.html --real-time-html --ws-url=wss://你的域名:443/ws --ssl-cert=/etc/letsencrypt/live/你的域名/fullchain.pem --ssl-key=/etc/letsencrypt/live/你的域名/privkey.pem - 移除证书链中过期的DST根证书(适配低版本苹果系统)
如果你的证书链默认携带了2021年9月30日过期的DST Root CA X3交叉签名证书,需要手动删除:- 打开
fullchain.pem文件,删除最后一段对应DST Root CA X3的证书块(从-----BEGIN CERTIFICATE-----到-----END CERTIFICATE-----的完整块) - 仅保留域名证书 + ISRG Root X1中间证书两段内容
- 打开
- 重启Goaccess服务生效配置
- 验证证书链有效性
执行以下命令校验证书链配置是否正确:openssl s_client -connect 你的域名:端口 -servername 你的域名
确认返回结果中没有出现过期的DST Root CA X3证书,所有证书的有效期均正常。 - 清空Safari缓存与SSL状态后重新访问验证。
内容的提问来源于stack exchange,提问作者blissweb
相关产品推荐
相关产品推荐

