curl 在 https 请求上成功,wget 没有

Res*_*ath 9 ssl wget curl

当我运行curl命令行

curl "https://example.com"
Run Code Online (Sandbox Code Playgroud)

它立即成功,返回请求的结果。

当我运行相同的 wget 命令时

wget https://example.com
Run Code Online (Sandbox Code Playgroud)

它最终因“无法建立 SSL 连接”而超时。没有任何具体的错误信息。它可以连接,但无法进行 SSL 握手。我试过了,--no-check-certificate但这没有什么区别 - 它似乎与超时有关。

然而:

wget http://example.com
Run Code Online (Sandbox Code Playgroud)

工作正常(HTTP 与 HTTPS)。

这也影响了PHP 的“ file()方法调用。

我的问题是,什么会导致 curl 成功检索页面(对于我们域中的所有站点)而不是 wget 或 php 解释器?这是周末的新问题,服务器之前很好。

(操作系统为 Red Hat Enterprise Linux 6.4)

tuo*_*alo 7

这似乎是选择 SSL 协议的问题。出于某种原因,服务器对协议很挑剔。有些客户碰巧做出了正确的猜测,有些则没有。

使用wget,尝试例如。--secure-protocol=tlsv1--secure-protocol=sslv3。有关更多详细信息,请参阅GNU Wget 手册页

使用 PHP,请参阅SO 上的这个问题


Jon*_*ica 0

从表面上看,这当然没有多大意义。第一步是确认 wget 完全适用于 ssl(您可以使用 wget 访问其他 ssl 站点吗?)。

如果不是:将其视为 wget 问题

(请注意,如果您使用 wget 尝试使用四个 diff ssl 站点,其中两个损坏,则仍然是 wget 问题)

另一个诊断:浏览器对 https url 做了什么?(chrome 和 ffox)——它们会发出警告还是连接干净?