linux - Chrome 上的 ERR_SSL_VERSION_INTERFERENCE

标签 linux google-chrome ssl websocket

我有一个使用 websocket-sharp 的网站用于客户端-服务器通信,并拥有 Let's Encrypt 颁发的证书。其他浏览器工作,但谷歌浏览器(在 Linux 上)在控制台中给出错误 ERR_SSL_VERSION_INTERFERENCE。禁用 TLS 1.3 可让用户规避此错误。我正在使用最新的稳定版本。

This答案表明问题出在 Chrome 检测到 “有问题的中间件” 但我不知道 Chrome 到底在寻找什么。

最佳答案

这原来是 Mono 的问题。 Mono 在较新版本中使用 BoringSSL,但在旧版本中默认情况下未启用。在较新的 Linux 发行版上,您可以执行 export MONO_TLS_PROVIDER=btls 但这对我不起作用,因为 CentOS 6(版本 4.4)上的 gcc 编译器太旧并且不支持 align 是编译 BoringSSL 所必需的。

首先,我按照此处的说明安装了 gcc 4.8:https://gist.github.com/stephenturner/e3bc5cfacc2dc67eca8b

wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
sudo yum install devtoolset-2
scl enable devtoolset-2 bash

然后我从他们的网站下载了mono的最新发布包(目前是5.12.0.226):http://www.mono-project.com/docs/compiling-mono/linux/

wget https://download.mono-project.com/sources/mono/mono-5.12.0.226.tar.bz2
tar xvf mono-5.12.0.226.tar.bz2
cd mono-5.12.0.226
./configure --prefix=/usr/local
make
make install

以防万一,我也做了 export MONO_TLS_PROVIDER=btls,虽然我认为没有必要,但不管你是否查看 ./configure< 末尾的输出 它应该会告诉您是否启用了 BTLS。

这也解决了最近 Firefox 更新 60.0.0.2 中的相同问题。

关于linux - Chrome 上的 ERR_SSL_VERSION_INTERFERENCE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49962714/

相关文章:

amazon-web-services - Nginx 400,使用 nginx-ingress Controller 将普通的 http 响应发送到 HTTPS 端口

java - 为 HTTPS 连接设置 https.protocols 系统属性的问题

c - linux mkdir函数无法授权完全权限

linux - 确保读取时内容完整的文件

api - 我如何学习 chrome.extension.sendRequest 方法?

javascript - 在 Chrome 中使用 javascript 在网站上插入用户名和密码

javascript - 如何删除 chrome 图标添加到主屏幕提示

ssl - 创建 SSL 后释放 SSL_CTX 是否安全

c++ - 执行 POST 请求时服务器的响应字符串不完整

java - 使用Java从不同操作系统的字节数组中获取字符串