php – 在亚马逊AWS上使用TLS v1.2 for Curl
我在下面使用这个
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部分.也许我需要升级它或什么?但是我该怎么做呢? 解决方法
要在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)之一. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |