繁体   English   中英

如果不禁用SSL,代码将无法运行

[英]Code does not work without disabling SSL

请看一下这段代码:

<?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应用可以访问此页面以获取某些来源的日期。 url返回一个json数据,我打印回来,然后,在我的应用程序中,我处理数据并显示它。 这对我来说工作正常(我还处于测试阶段)。

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

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

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

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

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

然后单击“查看证书”:

在此输入图像描述

打开cerficates页面的“Details”选项卡,然后选择层次结构顶部的证书。 这是CA证书。

在此输入图像描述

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

在此输入图像描述

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

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

curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

这会禁用SSL主机验证,以便您可以访问使用自签名证书的主机。 如果主持人有有效证书,请检查@ Baba的答案

安全考虑:

连接已加密,无法轻易嗅探。 但是您无法确保服务器是服务器。 因此,黑客可以利用中间人攻击来嗅探流量。 如果你想确保你必须采用@Babas方式并从服务器导入证书

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM