首页 > 解决方案 > 无法从 github 拉取,也无法更新 FC19 上的旧 TLS

问题描述

all:我正在维护一个旧的 FC19 linux 服务器,它不能迁移到更新的操作系统。但是在这台服务器上,我试图从 git 中提取一些 websocket 代码并得到这个错误:

/usr/bin/go get github.com/raphael/wsc

cd .; git clone https://github.com/raphael/wsc /root/ws/src/github.com/raphael/wsc

Cloning into '/root/ws/src/github.com/raphael/wsc'...
fatal: unable to access 'https://github.com/raphael/wsc/':
Peer reports incompatible or unsupported protocol version.
package github.com/raphael/wsc: exit status 128

我查看了其他一些 stackoverflow 答案,常见的答案是:“这是由于旧版本的 TLS,使用 yum 升级:yum update -y nss libcurl curl openssl”

但是当我进行 yum 更新时,它说一切都是最新的。我还需要做什么?

yum install nss
Package nss-3.17.2-1.fc19.i686 already installed and latest version
yum install curl
Package curl-7.29.0-27.fc19.i686 already installed and latest version
yum install libcurl
Package libcurl-7.29.0-27.fc19.i686 already installed and latest version
yum install openssl
Package 1:openssl-1.0.1e-40.fc19.i686 already installed and latest version

感谢您的帮助和洞察力。

标签: sslgithubfedorayum

解决方案


前段时间,GitHub 和大多数其他网站在 1.2 版之前放弃了对 TLS 的支持。1.2 之前的 TLS 版本存在大量安全问题,这导致了这一系列 Internet-Drafts(以前称为 tls-oldversions-diediedie 草案,并且有充分的理由)。

这不仅是良好的安全实践所必需的,而且因为任何使用信用卡、处理财务数据或受大多数合规性法规约束的人都必须放弃对旧 TLS 版本的支持。因此,当今 Internet 上几乎没有任何站点接受旧版本的 TLS。

在您的情况下,您尝试使用没有安全支持的过时操作系统,因此您遇到了不支持 TLS 1.2 的 TLS 库。因此,任何使用 libcurl 的东西,比如 Git,都是行不通的。

您可以尝试使用 SSH 而不是 HTTPS 进行克隆,这可能会奏效。请注意,它不会永远有效,因为 GitHub 使用 RSA 密钥,并且出于安全原因可能会在某些时候禁用旧版 SHA-1 签名,并且您的 OpenSSH 版本不支持更安全的 SHA-2 签名。您可能需要通过执行以下操作告诉 Go 始终使用 SSH:

$ git config --global url.git@github.com:.insteadOf https://github.com/

为避免您的机器受到威胁并因此对 Internet 造成危害,我强烈建议您尽早升级您的机器(或断开连接)。现代操作系统没有这个问题,并且可以使用 TLS 和 SSH 完全正常运行。


推荐阅读