【问题标题】:USing TLS v1.2 for Curl On Amazon AWS在 Amazon AWS 上为 Curl 使用 TLS v1.2
【发布时间】:2016-03-17 08:31:23
【问题描述】:

我使用下面的这个 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, false);
curl_setopt($ch, 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, true);
curl_setopt($ch, 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 部分。也许我需要升级它或什么?但是我该怎么做呢?

【问题讨论】:

    标签: php amazon-web-services curl amazon-ec2


    【解决方案1】:

    要在 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, CURLOPT_SSLVERSION, 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 之一/p>

    【讨论】:

      【解决方案2】:

      好的,所以我想通了,我想我会把答案放在这里,以防它对其他人有用。

      我怀疑问题出在 curl 版本上。为了让告诉 curl 使用哪个版本生效的行,我需要使用 curl 7.34 或更高版本。

      curl_setopt($ch, CURLOPT_SSLVERSION, 6);
      

      那么如何升级 curl 版本呢?嗯,环境主页上有一个很大的升级按钮,用于升级在我的实例上运行的 Linux 版本,所以我点击它同时升级了 curl。我现在有了 curl 版本 7.38,它使用了 TLS v1.2,正如我所愿。

      【讨论】:

        猜你喜欢
        • 2017-11-25
        • 1970-01-01
        • 2022-01-21
        • 1970-01-01
        • 1970-01-01
        • 2017-04-08
        • 2020-11-01
        • 1970-01-01
        相关资源
        最近更新 更多