HTTPS请求配置

更新时间:

本文为您介绍V1.0 SDK如何进行HTTPS请求配置。

使用HTTPS协议

可以通过设置忽略证书验证,支持guzzlehttp的其他配置guzzlephp request options

重要

使用HTTPS协议访问OpenAPI时,SDK会默认开启校验SSL/TLS证书有效性,若您代码环境没有证书,则会报错证书校验失败。

为保障环境通信安全,建议您保持开启,若在测试环境必须忽略证书校验,可以通过参数verify设置。

特化调用

通过Request配置HTTPS请求示例

<?php

require_once 'vendor/autoload.php';

use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use AlibabaCloud\Ecs\Ecs;

try {
    // 请确保已设置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
    AlibabaCloud::accessKeyClient(getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'));
    $request = Ecs::v20140526()->describeRegions();
    $result = $request
        ->scheme('https') // 设置请求协议。
        ->verify(false) // 设置是否进行证书校验,false忽略证书校验。为保障环境通信安全,建议您保持开启。
        ->version('2014-05-26')
        ->product('Ecs')
        ->action('DescribeRegions')
        ->regionId('cn-hangzhou')
        ->request();
    print_r($result->toArray());
} catch (ClientException $exception) {
    // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
    echo $exception->getMessage() . PHP_EOL;
} catch (ServerException $exception) {
    // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
    echo $exception->getMessage() . PHP_EOL;
    echo $exception->getErrorCode() . PHP_EOL;
    echo $exception->getRequestId() . PHP_EOL;
    echo $exception->getErrorMessage() . PHP_EOL;
}

泛化调用

RPC请求配置HTTPS请求示例

<?php

require_once 'vendor/autoload.php';

use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;

try {
    // 请确保已设置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
    AlibabaCloud::accessKeyClient(getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'));
    $result = AlibabaCloud::rpc()
        ->product('Ecs')
        ->version('2014-05-26')
        ->action('DescribeRegions')
        ->regionId('cn-hangzhou')
        ->scheme('https') // 设置请求协议。
        ->verify(false) // 设置是否进行证书校验,false忽略证书校验。为保障环境通信安全,建议您保持开启。
        ->request();
    print_r($result->toArray());
} catch (ClientException $exception) {
    // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
    echo $exception->getMessage() . PHP_EOL;
} catch (ServerException $exception) {
    // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
    echo $exception->getMessage() . PHP_EOL;
    echo $exception->getErrorCode() . PHP_EOL;
    echo $exception->getRequestId() . PHP_EOL;
    echo $exception->getErrorMessage() . PHP_EOL;
}

ROA请求配置HTTPS请求示例

<?php

require_once 'vendor/autoload.php';

use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;

try {
    // 请确保已设置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
    AlibabaCloud::accessKeyClient(getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'));
    $result = AlibabaCloud::roa()
        ->product('CS')
        ->version('2015-12-15')
        ->action('DescribeClustersV1')
        ->pathPattern('/api/v1/clusters')
        ->regionId('cn-hangzhou')
        ->options([
            'query' => [
            ],
        ])
        ->scheme('https') // 设置请求协议。
        ->verify(false) // 设置是否进行证书校验,false忽略证书校验。为保障环境通信安全,建议您保持开启。
        ->request();
    print_r($result->toArray());
} catch (ClientException $exception) {
    echo $exception->getMessage() . PHP_EOL;
} catch (ServerException $exception) {
    echo $exception->getMessage() . PHP_EOL;
    echo $exception->getErrorCode() . PHP_EOL;
    echo $exception->getRequestId() . PHP_EOL;
    echo $exception->getErrorMessage() . PHP_EOL;
}

传入自定义证书

为保障环境通信安全,建议您使用HTTPS请求协议,并开启证书校验。PHP V1.0 SDK支持以下方式进行证书校验。

  1. 在request上设置:

<?php

use AlibabaCloud\Client\AlibabaCloud;

$request = AlibabaCloud::rpc()
                       ->product('Sts')
                       ->version('2015-04-01')
                       ->action('GenerateSessionAccessKey')
                       ->host('sts.ap-northeast-1.aliyuncs.com');

// 在操作系统中寻找
$request->verify(true);

// 使用指定的文件
$request->verify(['verify' => '/path/to/cert.pem']);

// 使用指定的文件和密码
$request->verify(['verify' => ['/path/to/cert.pem','password']]);

2. 在client上设置:

<?php

use AlibabaCloud\Client\AlibabaCloud;

// 在操作系统中寻找
AlibabaCloud::getDefaultClient()
            ->verify(true)
            ->asDefaultClient();

// 使用指定的文件
AlibabaCloud::getDefaultClient()
            ->verify(['verify' => '/path/to/cert.pem'])
            ->asDefaultClient();

// 使用指定的文件和密码
AlibabaCloud::getDefaultClient()
            ->verify(['/path/to/cert.pem','password'])
            ->asDefaultClient();