Configure HTTPS, validação de certificados TLS e certificados CA personalizados no Alibaba Cloud SDK V1.0 for PHP para proteger suas chamadas de API e gerencie conexões em ambientes de rede específicos.
Entenda os padrões do SDK V1.0
O SDK legado V1.0 apresenta comportamentos padrão diferentes dos SDKs V2.0:
O protocolo padrão é HTTP: Ao contrário dos SDKs V2.0, o SDK V1.0 usa HTTP por padrão. Ative explicitamente o HTTPS para cada requisição.
A validação de certificado está ativada por padrão: Ao ativar o HTTPS, o SDK valida automaticamente o certificado TLS do servidor.
Defina o protocolo da requisição
Como o SDK utiliza HTTP por padrão, ative o HTTPS em cada requisição para criptografar os dados em trânsito.
Requisição RPC genérica (Recomendado)
$result = AlibabaCloud::rpc()
->product('Ecs')
->version('2014-05-26')
->action('DescribeRegions')
->regionId('cn-hangzhou')
->scheme('https')
->verify(true)
->request();
Requisição especializada
Este estilo utiliza classes geradas especificamente para cada produto.
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();
Requisição ROA genérica
$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();
Use o pacote de CA do sistema (Recomendado)
Defina o esquema da requisição como https e configure verify como true. Esta é a configuração de segurança recomendada.
$result = AlibabaCloud::rpc()
->scheme('https') // Enable HTTPS
->verify(true) // Enable certificate verification using the system's CA bundle
// ... other request parameters
->request();
Use um certificado CA personalizado
Caso sua rede utilize um proxy com certificado próprio, forneça um pacote de Autoridade Certificadora (CA) personalizado. Configure essa opção no nível da requisição ou no nível do cliente.
Configuração no nível da requisição
Aplique a definição a uma única requisição. Esta abordagem é útil para endpoints que exigem uma CA diferente.
<?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']]);
Configuração no nível do cliente
Aplique a configuração ao cliente padrão para que todas as requisições subsequentes utilizem o pacote de CA personalizado.
<?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();
Desative a validação de certificado TLS
Desativar a validação de certificados representa um risco de segurança. Utilize esta opção apenas para testes em ambientes confiáveis. Nunca desative a validação de certificados em código de produção.
Para ignorar a validação de certificados, defina o parâmetro verify como False.
$result = AlibabaCloud::rpc()
->scheme('https')
// This option skips certificate validation for a single API call.
->verify(false)
// ... other request parameters
->request();
Referências
Opções de Requisição do Guzzle: verify: Documentação do cliente HTTP subjacente sobre verificação de certificados.