Golang go1.14.7.linux-amd64.tar.gz 校验和不匹配

Golang go1.14.7.linux-amd64.tar.gz checksum not matching

https://golang.org/dl/ 显示与我下载到 VPS:

中的不同的 SHA256 校验和

go1.14.7.linux-amd64.tar.gz Archive Linux x86-64 118MB 4a7fa60f323ee1416a4b1425aefc37ea359e9d64df19c326a58953a97ad41ea5

我得到不同的值:

sha256sum go1.14.7.linux-amd64.tar.gz 353f6c251ab323f7435d107577f1504d3c4f74af4ebb06fa2d3c71fc7560f4f3 go1.14.7.linux-amd64.tar.gz

我使用

下载了它

curl -O https://golang.org/dl/go1.14.7.linux-amd64.tar.gz

这是怎么回事? golang.org 值是否可能未更新?中间人攻击或类似攻击?

您看到的问题是由于没有使用执行自动重定向的 -L 选项。如果您使用的浏览器不正确支持 Location header,您使用的 link 重定向到真实位置并提供存根 HTML 页面来执行重定向.因此,您得到的散列是一个小的、不完整的 HTML 文件,而不是真正的 Go 存档。

如果我不使用-L选项,我会得到你报告的结果;如果我这样做,那么我会得到下载页面上列出的预期结果。请注意,如果您对要验证的存档具有可信的强校验和或签名,则使用 -L 选项始终是安全的,因为您将手动验证存档,而攻击者将无法篡改它。