O SDK V2.0 acessa os serviços da Alibaba Cloud via HTTPS por padrão. Para alternar entre protocolos, defina o parâmetro protocol da classe com.aliyun.teaopenapi.models.Config como HTTP ou HTTPS. Recomendamos HTTPS para transmissão segura de dados.
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
config.setProtocol("HTTPS");
Por padrão, o SDK verifica os certificados SSL/TLS nas conexões HTTPS. Se o ambiente não tiver os certificados necessários, a verificação pode falhar. Use o parâmetro ignoreSSL da classe com.aliyun.teautil.models.RuntimeOptions para ignorar a verificação de certificados. Por exemplo, em ambientes de homologação, defina ignoreSSL como true para contornar a verificação durante os testes.
Ative a validação de certificados SSL/TLS em ambientes de produção.
com.aliyun.teautil.models.RuntimeOptions runtimeOptions = new com.aliyun.teautil.models.RuntimeOptions();
// true: skip certificate validation, false: validate certificates (default is false)
runtimeOptions.ignoreSSL = true;
Problemas comuns em conexões HTTPS
Cliente Java reporta erro Connection reset
Aplicações Java que chamam APIs via HTTPS podem encontrar os erros Connection reset ou javax.net.ssl.SSLException, mesmo quando a mesma URL funciona corretamente no navegador. Esse problema geralmente ocorre quando a versão padrão de TLS do runtime Java não corresponde à exigida pelo servidor.
Causa raiz
O JDK 7 e versões anteriores usam TLS 1.0 por padrão. O JDK 8 usa TLS 1.2 por padrão.
O servidor de destino desabilitou TLS 1.0 e TLS 1.1 e oferece suporte apenas a TLS 1.2 ou superior.
Navegadores negociam automaticamente a versão mais alta de TLS suportada, ao passo que clientes Java adotam o padrão do JDK, o que pode gerar incompatibilidades.
Solução
Após criar um objeto Config, defina explicitamente a versão TLS como 1.2 por meio de um argumento JVM ou de código.
-
Opção 1: Defina um argumento de inicialização da JVM
Adicione o seguinte parâmetro ao comando de inicialização:
java -Dhttps.protocols=TLSv1.2 -jar your-app.jar -
Opção 2: Especifique a versão TLS no código
// Set the system property at the program entry point System.setProperty("https.protocols", "TLSv1.2");
Após aplicar a alteração, reinicie a aplicação e verifique se as chamadas HTTPS funcionam corretamente. Se os erros persistirem, confirme se as versões TLS e os cipher suites suportados pelo servidor de destino são compatíveis com o ambiente Java utilizado.