在使用V2.0 SDK开发时,默认采用HTTPS协议访问阿里云服务。您可以通过com.aliyun.teaopenapi.models.Config类的 protocol 参数灵活选择所需的通信协议,支持的值包括HTTP或HTTPS。为保障数据传输安全,建议始终优先使用HTTPS协议。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
config.setProtocol("HTTPS");
在使用HTTPS协议进行访问时,SDK默认启用SSL/TLS证书校验。如果您的代码环境缺乏相应的证书,则可能会出现证书校验失败的错误。您可以通过 com.aliyun.teautil.models.RuntimeOptions 类的 ignoreSSL 参数来设置是否启用SSL/TLS证书校验。例如,在测试环境中,您可以将 ignoreSSL 设置为true,以忽略证书校验进行临时测试。
重要
生产环境建议启用SSL/TLS证书校验。
com.aliyun.teautil.models.RuntimeOptions runtimeOptions = new com.aliyun.teautil.models.RuntimeOptions();
// true:忽略对证书的验证,false:校验证书,默认false
runtimeOptions.ignoreSSL = true;
常见HTTPS连接问题
Java客户端报Connection reset错误
使用Java代码通过HTTPS调用接口时,如果出现Connection reset或javax.net.ssl.SSLException错误,而浏览器访问同一地址正常,通常是因为Java运行环境的TLS协议版本与服务端不匹配。
原因分析
-
JDK 7及以下版本默认使用TLS 1.0,JDK 8默认使用TLS 1.2。
-
目标服务端已禁用TLS 1.0和TLS 1.1,仅支持TLS 1.2及以上版本。
-
浏览器会自动协商最高TLS版本,Java客户端则使用JDK默认版本,导致两者行为不一致。
解决方法
在创建Config对象后,通过JVM参数或代码显式指定TLS版本为1.2。
-
方式一:设置JVM启动参数
在启动命令中添加以下参数:
java -Dhttps.protocols=TLSv1.2 -jar your-app.jar -
方式二:在代码中指定TLS版本
// 在程序入口处设置系统属性 System.setProperty("https.protocols", "TLSv1.2");
设置完成后重新运行程序,验证HTTPS调用是否恢复正常。如果仍然报错,检查目标服务端支持的TLS版本和密码套件,确认与Java环境兼容。