当我运行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)
这似乎是选择 SSL 协议的问题。出于某种原因,服务器对协议很挑剔。有些客户碰巧做出了正确的猜测,有些则没有。
使用wget
,尝试例如。--secure-protocol=tlsv1
或--secure-protocol=sslv3
。有关更多详细信息,请参阅GNU Wget 手册页。
使用 PHP,请参阅SO 上的这个问题。
从表面上看,这当然没有多大意义。第一步是确认 wget 完全适用于 ssl(您可以使用 wget 访问其他 ssl 站点吗?)。
如果不是:将其视为 wget 问题
(请注意,如果您使用 wget 尝试使用四个 diff ssl 站点,其中两个损坏,则仍然是 wget 问题)
另一个诊断:浏览器对 https url 做了什么?(chrome 和 ffox)——它们会发出警告还是连接干净?
归档时间: |
|
查看次数: |
35412 次 |
最近记录: |