无法在 Ubuntu 14.04 LTS 上的 wget 上建立 SSL 连接

新手上路,请多包涵

我尝试通过 wget 下载图像,但出现错误:无法建立 SSL 连接。

 wget https://www.website.com/image.jpg
--2015-02-26 01:30:17--  https://www.website.com/image.jpg
Resolving www.website.com (www.website.com)... xx.xxx.xx.xx
Connecting to www.website.com (www.website.com)|xx.xxx.xx.xx|:443... connected.
Unable to establish SSL connection.

我的测试用例:

  1. 使用 Ubuntu 12.04.4 LTS(GNU/Linux 3.8.0-44-generic x86_64),基于 linux-gnu 构建的 GNU Wget 1.13.4,我能够使用上面的代码下载图像。没有错误。
  2. 使用 Ubuntu 14.04 LTS(GNU/Linux 3.13.0-24-generic x86_64),基于 linux-gnu 构建的 GNU Wget 1.15,我无法使用上面的代码下载图像。

另一个变量是 www.website.com 使用 TLS 1.0。我不知道这会如何影响 wget。但是,如果我从 TLS 1.2 网站获取图像,我不会从两个测试用例中得到任何 ssl 连接错误。

Ubuntu 14.04 或 wget 1.15 是否与 TLS 1.0 网站不兼容?我是否需要安装/下载任何库/软件才能启用此连接?

原文由 xanderlopez 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 875
2 个回答

…现在它只发生在我正在测试的网站上。我不能在这里发布它,因为它是机密的。

然后我猜它是与 TLS1.2 不兼容的站点之一。 12.04 中使用的 openssl 在客户端不使用 TLS1.2,而在 14.04 中它使用 TLS1.2,这可能解释了差异。要解决此问题,请尝试明确使用 --secure-protocol=TLSv1 。如果这没有帮助,请检查您是否可以使用 openssl s_client -connect ... (可能不是)和 openssl s_client -tls1 -no_tls1_1, -no_tls1_2 ... 访问该站点。

请注意,这可能是其他原因,但这是最可能的原因,并且无法访问该站点,无论如何,一切都只是猜测。

详细假设的问题:通常客户端使用最兼容的握手来访问服务器。这是与旧 SSL 版本兼容的 SSLv23 握手,但会宣布客户端支持的最佳 TLS 版本,以便服务器可以选择最佳版本。在这种情况下,wget 将宣布 TLS1.2。但是有一些损坏的服务器从来没有想过有一天会出现像 TLS1.2 这样的东西,如果客户端宣布支持这个热门的新版本(从 2008 年开始!),它们会拒绝握手,而不是只响应服务器的最佳版本支持。要访问这些损坏的服务器,客户端必须撒谎并声称它只支持 TLS1.0 作为最佳版本。

Ubuntu 14.04 或 wget 1.15 是否与 TLS 1.0 网站不兼容?我是否需要安装/下载任何库/软件才能启用此连接?

问题是服务器,而不是客户端。大多数浏览器通过使用较低版本重试来解决这些损坏的服务器。如果第一次连接尝试失败,大多数其他应用程序将永久失败,即它们不会自行降级,并且必须通过某些应用程序特定设置强制执行另一个版本。

原文由 Steffen Ullrich 发布,翻译遵循 CC BY-SA 3.0 许可协议

你必须使用旧版本的 wget 我有同样的问题。我使用 wget 1.12.so 来解决这个问题有两种方法:更新 wget 或使用 curl

 curl -LO 'https://example.com/filename.tar.gz'

原文由 ParasPatel 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题