このガイドでは、Alibaba Cloud SDK V1.0 for PHP で HTTPS、TLS 証明書検証、およびカスタム CA 証明書を構成する方法について説明します。これらの設定を使用して、API 呼び出しを保護し、特定のネットワーク環境での接続を管理します。
V1.0 SDK のデフォルト動作
レガシーな V1.0 SDK は、V2.0 SDK とは異なるデフォルトの動作をします。
デフォルトプロトコルは HTTP: V2.0 SDK とは異なり、V1.0 SDK はデフォルトで安全でない HTTP プロトコルを使用します。リクエストごとに明示的に HTTPS を有効にする必要があります。
証明書検証はデフォルトで有効: HTTPS を有効にすると、SDK は自動的にサーバーの TLS 証明書を検証します。
リクエストプロトコルの設定
SDK はデフォルトで HTTP を使用するため、転送中のデータを暗号化するには、リクエストごとに HTTPS を有効にする必要があります。
汎用 RPC リクエスト (推奨)
$result = AlibabaCloud::rpc()
->product('Ecs')
->version('2014-05-26')
->action('DescribeRegions')
->regionId('cn-hangzhou')
->scheme('https')
->verify(true)
->request();特化型リクエスト
このスタイルでは、プロダクト固有の生成クラスを使用します。
use AlibabaCloud\Ecs\Ecs;
$request = Ecs::v20140526()->describeRegions();
$result = $request
->scheme('https')
->verify(true)
->version('2014-05-26')
->product('Ecs')
->action('DescribeRegions')
->regionId('cn-hangzhou')
->request();汎用 ROA リクエスト
$result = AlibabaCloud::roa()
->product('CS')
->version('2015-12-15')
->action('DescribeClustersV1')
->pathPattern('/api/v1/clusters')
->regionId('cn-hangzhou')
->options([
'query' => [
],
])
->scheme('https')
->verify(true)
->request();システムの CA バンドルの使用 (推奨)
リクエストのスキームを https に設定し、verify を true に設定します。これは、最も一般的で推奨される安全な設定です。
$result = AlibabaCloud::rpc()
->scheme('https') // HTTPS を有効化
->verify(true) // システムの CA バンドルを使用して証明書検証を有効化
// ... other request parameters
->request();カスタム CA 証明書の使用
独自の証明書を持つプロキシを使用する企業ネットワーク内にいる場合、カスタムの認証局 (CA) バンドルを提供する必要がある場合があります。これは、リクエストレベルまたはクライアントレベルで設定できます。
リクエストレベルの設定
設定を単一のリクエストオブジェクトに適用します。これは、特別な CA を必要とする特定のエンドポイントへのリクエストに役立ちます。
<?php
use AlibabaCloud\Client\AlibabaCloud;
$request = AlibabaCloud::rpc()
->product('Sts')
->version('2015-04-01')
->action('GenerateSessionAccessKey')
->host('sts.ap-northeast-1.aliyuncs.com');
// カスタム CA 証明書ファイルを使用
$request->verify(['verify' => '/path/to/cert.pem']);
// パスワードで保護されたカスタム CA 証明書ファイルを使用
$request->verify(['verify' => ['/path/to/cert.pem','password']]);クライアントレベルの設定
設定をデフォルトクライアントに適用して、そのクライアントを使用する後続のすべてのリクエストに適用されるようにします。
<?php
use AlibabaCloud\Client\AlibabaCloud;
// カスタム CA 証明書ファイルを使用
AlibabaCloud::getDefaultClient()
->verify(['verify' => '/path/to/cert.pem'])
->asDefaultClient();
// パスワードで保護されたカスタム CA 証明書ファイルを使用
AlibabaCloud::getDefaultClient()
->verify(['/path/to/cert.pem','password'])
->asDefaultClient();TLS 証明書検証の無効化
証明書検証を無効にすると、セキュリティリスクが生じます。このオプションは、信頼できる環境でのテストにのみ使用してください。本番コードでは絶対に証明書検証を無効にしないでください。
初期化時に verify パラメーターを False に設定することで、クライアントレベルで証明書検証を無効にできます。
$result = AlibabaCloud::rpc()
->scheme('https')
// このオプションは、単一の API 呼び出しで証明書検証をスキップします。
->verify(false)
// ... other request parameters
->request();参考資料
Guzzle Request Options: verify:証明書検証のための、基盤となる HTTP クライアントのドキュメントです。