当前位置: 首页 > 知识库问答 >
问题:

OPENSSL file_get_contents():启用加密失败

赖杰
2023-03-14

我正在建立一个个人股票平台(不是分布式的)。我想要的一个组件是这个页面上的EPS图:

https://eresearch.fidelity.com/eresearch/evaluate/curritials/currence.jhtml?stockspage=currene&symbols=aapl&showpriceline=yes

正如您所看到的,该页面是https,所以经过几天的努力,我启用了OpenSSL,现在它似乎可以用于所有https页面,比如facebook和twitter的主页,但是它仍然不能用于我需要的页面。

file_get_contents('https://facebook.com'); /* works */
file_get_contents('https://twittercom'); /* works */
file_get_contents('https://eresearch.fidelity.com/eresearch/evaluate/fundamentals/earnings.jhtml?stockspage=earnings&symbols=AAPL&showPriceLine=yes');

我收到警告:

Warning: file_get_contents(): SSL: crypto enabling timeout in C:\xampp\htdocs\index.php on line 3
Warning: file_get_contents(): Failed to enable crypto in C:\xampp\htdocs\index.php on line 3
Warning: file_get_contents(https://eresearch.fidelity.com/eresearch/evaluate/fundamentals/earnings.jhtml?stockspage=earnings&symbols=AAPL&showPriceLine=yes): failed to open stream: operation failed in C:\xampp\htdocs\index.php on line 3
Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\index.php on line 3

我能看到的唯一区别是,fidelity页面在https标签附近有一个三角形。

共有1个答案

师向文
2023-03-14

好的,我找到了解决办法。问题是站点使用SSLv3。并且我知道openssl模块中存在一些问题。前一段时间,我在SSL版本上遇到了同样的问题。

<?php
function getSSLPage($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSLVERSION,3); 
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

var_dump(getSSLPage("https://eresearch.fidelity.com/eresearch/evaluate/analystsOpinionsReport.jhtml?symbols=api"));
?>

当您用curl将SSL版本设置为v3时,它就可以工作了。

编辑:

curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
 类似资料:
  • 我尝试在服务器上进行gpg加密/解密,对于加密,我使用以下命令行: 我想要找到原因:同一个用户有2个不同的密钥和1个秘密密钥。但现在又出现了一个问题:我删除了错误的键,并再次进行相同的测试。 解密后的答案是: 您需要一个密码短语来解锁用户的密钥:“Droli Mail_Adress”2048位RSA密钥,ID 6D2F1BE9,创建2017-07-19(主密钥ID 09C41BAC) 没有关于gp

  • 因此,这种特殊的异常非常常见,但我的问题与通常被问到的略有不同。 我有一个AES解密和加密函数,定义如下: 现在,如果我像这样执行单个解密: 字节数组输出很好。而如果我执行双重加密/解密: 我得到了著名的<code>javax.crypto。BadPaddingException:给定的最终块未正确填充异常。请注意,和只是整数(假设它们都是0)。目前,IVBytes只是一个大小为16的空字节数组,

  • 问题内容: 我一直试图从我在服务器上创建的PHP页面访问此特定的REST服务。我将问题缩小到这两行。所以我的PHP页面看起来像这样: 该页面死于第2行,并出现以下错误: * 警告:file_get_contents():SSL操作失败,代码为1。OpenSSL错误消息:error:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证在第2行的… php中失

  • null 我们用的是Gentoo服务器。我们最近升级到PHP版本5.6。这个问题是在升级之后出现的。 在前面的尝试中,我设置,并将其作为参数传递给file_get_contents,如下所述:file_get_contents忽略verify_peer=>false?但就像作者指出的那样;没什么区别。 我询问了一位服务器管理员,我们的php.ini文件中是否存在以下行: extension=php

  • 我有一个问题与ADFS身份验证,因为我升级了Spring启动版本从2.2.5。释放到2.5. x 在新版本中,我收到以下错误消息:未能解密EncryptedData 依赖性: SAML请求 重新分析:/ SAML请求: 西格尔:http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 2.vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

  • 我正在更新一个密码加密实用程序,从完全自带的东西到一个围绕Jasypt和Bouncy Castle构建的。实用程序加密密码;然后,加密的字符串被补丁到属性文件中,并由Grails应用程序回读和解密。 我编写了一个Java命令行实用程序来加密密码。相关的Java代码是: