在使用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環境相容。