【发布时间】:2012-10-10 10:04:52
【问题描述】:
我注意到 PHP 中的 CURL 存在一个小问题。每当我请求https:// 连接时,它都会返回“false”,并且我在打开 PHP 页面时尝试访问的每个网站都报告有一个不受信任的证书。
这是我的请求方法:
private function request($url, $params, $method = "GET") {
if ($method == "GET")
$url = $this->structGET($url, $params);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if (isset($_SERVER['HTTP_USER_AGENT'])) {
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
} else {
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.X.Y.Z Safari/525.13.');
}
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$header[] = 'Accept-Language: EN';
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
if ($method == "POST") {
curl_setopt($ch, CURLOPT_POST, true);
if ($params)
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
}
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
这就是我尝试访问 Facebook 时 Chrome 返回的内容。
网站的安全证书不受信任!
您试图到达 www.facebook.com,但服务器提供了一个由 不受计算机操作系统信任的实体。这 可能意味着服务器已经生成了自己的安全凭证, 谷歌浏览器不能依赖的身份信息,或者 攻击者可能试图拦截您的通信。你不能 继续,因为网站运营商要求提高安全性 对于这个域。
【问题讨论】:
-
"[...] 我在打开 PHP 页面时尝试访问的每个网站都报告有一个不受信任的证书"。您能否澄清一下,您访问自己的页面这一事实与您直接使用浏览器访问 Facebook 时获得的结果有什么关系?其他浏览器,其他机器会发生什么?您管理自己的机器吗?您在公司网络上吗?
-
每个使用 https://* 的网站在每个 SSL 网站的每个浏览器中都会出现相同的错误。
-
只在你的机器上?您在公司网络上吗?那个网络上的其他机器呢?
-
只有在我的机器上,服务器是本地的。
-
我猜它没有像那个网络上的其他机器一样集中安装?