Configurez HTTPS, la validation des certificats TLS et les certificats d'autorité de certification (CA) personnalisés pour le SDK Alibaba Cloud V1.0 pour PHP afin de sécuriser vos appels API et de gérer les connexions dans des environnements réseau spécifiques.
Comprendre les valeurs par défaut du SDK V1.0
L'ancien SDK V1.0 présente des comportements par défaut différents de ceux des SDK V2.0 :
Le protocole par défaut est HTTP : Contrairement aux SDK V2.0, le SDK V1.0 utilise HTTP par défaut. Vous devez activer explicitement HTTPS pour chaque requête.
La validation des certificats est activée par défaut : Lorsque vous activez HTTPS, le SDK valide automatiquement le certificat TLS du serveur.
Définir le protocole de requête
Le SDK utilise HTTP par défaut ; vous devez donc activer HTTPS sur chaque requête pour chiffrer les données en transit.
Requête RPC générique (recommandée)
$result = AlibabaCloud::rpc()
->product('Ecs')
->version('2014-05-26')
->action('DescribeRegions')
->regionId('cn-hangzhou')
->scheme('https')
->verify(true)
->request();
Requête spécialisée
Ce style utilise des classes générées spécifiques au produit.
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();
Requête ROA générique
$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();
Utiliser le bundle CA du système (recommandé)
Définissez le schéma de requête sur https et définissez verify sur true. Il s'agit de la configuration sécurisée recommandée.
$result = AlibabaCloud::rpc()
->scheme('https') // Enable HTTPS
->verify(true) // Enable certificate verification using the system's CA bundle
// ... other request parameters
->request();
Utiliser un certificat CA personnalisé
Si votre réseau utilise un proxy avec son propre certificat, fournissez un bundle d'autorité de certification (CA) personnalisé. Vous pouvez configurer cette option au niveau de la requête ou au niveau du client.
Configuration au niveau de la requête
Appliquez le paramètre à une seule requête. Cette approche est utile pour les endpoints qui nécessitent un CA différent.
<?php
use AlibabaCloud\Client\AlibabaCloud;
$request = AlibabaCloud::rpc()
->product('Sts')
->version('2015-04-01')
->action('GenerateSessionAccessKey')
->host('sts.ap-northeast-1.aliyuncs.com');
// Use a custom CA certificate file
$request->verify(['verify' => '/path/to/cert.pem']);
// Use a custom CA certificate file that is password-protected
$request->verify(['verify' => ['/path/to/cert.pem','password']]);
Configuration au niveau du client
Appliquez le paramètre au client par défaut afin que toutes les requêtes suivantes utilisent le bundle CA personnalisé.
<?php
use AlibabaCloud\Client\AlibabaCloud;
// Use a custom CA certificate file
AlibabaCloud::getDefaultClient()
->verify(['verify' => '/path/to/cert.pem'])
->asDefaultClient();
// Use a custom CA certificate file that is password-protected
AlibabaCloud::getDefaultClient()
->verify(['/path/to/cert.pem','password'])
->asDefaultClient();
Désactiver la validation des certificats TLS
La désactivation de la validation des certificats constitue un risque de sécurité. N'utilisez cette option que pour des tests dans des environnements de confiance. Ne désactivez jamais la validation des certificats dans le code de production.
Pour ignorer la validation des certificats, définissez le paramètre verify sur False.
$result = AlibabaCloud::rpc()
->scheme('https')
// This option skips certificate validation for a single API call.
->verify(false)
// ... other request parameters
->request();
Références
Options de requête Guzzle : verify : Documentation du client HTTP sous-jacent pour la vérification des certificats.