Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当没有可用的https版本时,ssl_验证_结果为0_Php_Curl_Ssl - Fatal编程技术网

Php 当没有可用的https版本时,ssl_验证_结果为0

Php 当没有可用的https版本时,ssl_验证_结果为0,php,curl,ssl,Php,Curl,Ssl,我有一个使用http而不是https的站点。当我现在使用cURL时,http版本会得到http\u code=200。当我现在使用https版本时,它会得到0,这没关系,因为该站点没有https版本。但问题是,ssl_Verify_结果为0,这意味着: 手术是成功的 资料来源: 这是为什么?这确实是openSSL中的一个错误。此功能仅在以下情况下有用: curl\u setopt($ch,CURLOPT\u SSL\u VERIFYPEER,true) 另见: 如果未提供对等证书,则返回的结果代

我有一个使用http而不是https的站点。当我现在使用
cURL
时,http版本会得到
http\u code=200
。当我现在使用https版本时,它会得到
0
,这没关系,因为该站点没有https版本。但问题是,ssl_Verify_结果为0,这意味着:

手术是成功的

资料来源:


这是为什么?

这确实是openSSL中的一个错误。此功能仅在以下情况下有用:

curl\u setopt($ch,CURLOPT\u SSL\u VERIFYPEER,true)

另见:

如果未提供对等证书,则返回的结果代码为X509\u V\u OK。这是因为没有发生验证错误,但并不表示成功。SSL\u get\u verify\u result()仅在与SSL\u get\u peer\u证书(3)连接时有用。

请记住,当您希望cURL连接到SSL并验证证书时,首先必须下载CA证书并将其保存到应用程序中(firefox可以这样做),并在cURL调用中引用它。例如:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CACertificats/AddTrustExternalCARoot.crt");

关于这方面的小教程:

当然,如果你告诉我为什么需要代码,我会的?我在php中使用简单的curl请求。只需将基本方法与这些附加选项一起使用
returntrasnfer=>true | verifypeer=>false | followlocation=>true
其余就是基本方法。i、 e.:curl\u init、curl\u execute等“…不成功”-我不确定这是否正确
ssl\u-verify\u-result
来自OpenSSL库,我相信它的
X509\u-OK
。根据OpenSSL,“验证成功或未提供对等证书”。它看起来像是卷曲中的一个潜在的虫子。cURL可能应该表示没有SSL/TLS,而不是表示成功(因为cURL是在SSL库之上分层的)。@jww显然是这样。它在doc
中也指出,如果没有提供对等证书,则返回的结果代码为X509_V_OK。这是因为没有发生验证错误,但并不表示成功。SSL\u get\u verify\u result()仅在与SSL\u get\u peer\u证书(3)连接时有用。