加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 在亚马逊AWS上使用TLS v1.2 for Curl

发布时间:2020-12-13 22:24:49 所属栏目:PHP教程 来源:网络整理
导读:我在下面使用这个 PHP函数来使用curl来联系外部API function api_post($url,$data = array()) {global $api_key;global $password;$data = json_encode($data);$ch = curl_init();curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER
我在下面使用这个 PHP函数来使用curl来联系外部API

function api_post($url,$data = array()) {

global $api_key;
global $password;

$data = json_encode($data);

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);
curl_setopt($ch,CURLOPT_SSLVERSION,6);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,CURLOPT_MAXREDIRS,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_HTTPHEADER,array(
    'Content-Type: application/json','Accept: application/json'
));

curl_setopt($ch,CURLOPT_USERPWD,$api_key . ':' . $password);

curl_setopt($ch,CURLOPT_POST,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($ch,CURLOPT_TIMEOUT,30);

$response = curl_exec($ch);

return $response;   
}

我正在与之通信的api即将坚持使用tls v1.2这是一件好事,除了某些原因我的代码使用的是1.0版本.

如果我从本地服务器但在生产服务器(AWS Elastic Beanstalk上的Amazon Web Services EC2实例)上执行此操作则不错.我想这与我的服务器设置有关,但我不知道是什么或如何解决它.

这是我的PHPinfo的curl部分.也许我需要升级它或什么?但是我该怎么做呢?

enter image description here

解决方法

要在curl上强制执行TLS版本,您可能需要使用

bool curl_setopt ( resource $ch,int $option,mixed $value )

如此处所述:http://php.net/manual/en/function.curl-setopt.php

TLS v1.2的示例

curl_setopt ($setuploginurl,6);

CURLOPT_SSLVERSION:CURL_SSLVERSION_DEFAULT(0),CURL_SSLVERSION_TLSv1(1),CURL_SSLVERSION_SSLv2(2),CURL_SSLVERSION_SSLv3(3),CURL_SSLVERSION_TLSv1_0(4),CURL_SSLVERSION_TLSv1_1(5)或CURL_SSLVERSION_TLSv1_2(6)之一.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读