0

请看一下这段代码:

<?php
$url = "the_source_url";  
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$result = curl_exec($ch);
print_r($result);
?>

我的 Android 应用程序访问此页面以从某个来源获取日期。返回一个 json 数据,url我打印回来,然后在我的应用程序中处理数据并显示它。这对我来说现在很好(我仍处于测试阶段)。

我在 SO 中读到禁用SSL(我在第 6 行中所做的)是有风险的,不推荐。但是,除非我禁用它,否则我无法使我的脚本工作。

如何在不禁用 SSL 的情况下使其工作?或者如何消除风险?

4

2 回答 2

2

禁用证书会使您容易受到中间人攻击,您可以下载使用证书

curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt ($ch, CURLOPT_CAINFO, "PATH_TO_CERTIFICATE/cert.pem");

要获得证书,请遵循本指南

然后点击“查看证书”:

在此处输入图像描述

调出证书页面的“详细信息”选项卡,然后选择层次结构顶部的证书。这是 CA 证书。

在此处输入图像描述

然后单击“导出”,并将 CA 证书保存到您选择的位置,确保选择 X.509 证书 (PEM) 作为保存类型/格式。

在此处输入图像描述

图片来源:http://unitstep.net/

于 2013-05-04T12:14:44.937 回答
0

您需要添加选项CURLOPT_SSL_VERIFYHOST并将其设置为false

curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

这将禁用 SSL 主机验证,以便您可以访问使用自签名证书的主机。如果主机有一个有效的证书然后检查@Baba 的答案

安全考虑:

连接是加密的,不能那么容易被嗅探。但是你不能确定服务器就是服务器。因此,黑客可以利用中间人攻击来嗅探流量。如果你想确定你必须去@Babas方式并从服务器导入证书

于 2013-05-04T12:10:28.673 回答