ssl - 无法从 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
感谢您的帮助和洞察力。
解决方案
前段时间,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 完全正常运行。
推荐阅读
- node.js - MEAN - 未找到 Http Put 请求 404
- python - 使用另一个列表测试列表的内容
- postgresql - PostgreSQL 12 可以在执行时使用子查询返回列表进行分区修剪吗?
- python - 匹配捕获组固定次数
- python - 无法使用 Matplotlib 将 Cartopy 生成的图形保存为 pdf 文件
- android - Firebase orderBy 时间戳实际上没有排序
- c++ - 嵌套模板使用/typdef
- c# - DataGridView 连接到数据库
- c++ - 从 STL 优先队列中搜索/删除?
- javascript - 如何确定直接应用于元素的所有 CSS 样式?