【发布时间】:2017-10-02 22:05:51
【问题描述】:
我有一个与 API 建立 HTTP 连接的 Google App Engine Java 7 服务器:
// Setup
HttpClient client = new DefaultHttpClient();
HttpPost request = new HttpPost(Url);
request.setEntity(new StringEntity(Xml));
// Execute request and extract response
ResponseHandler<String> response = new BasicResponseHandler();
String body = client.execute(request, response);
return body;
但是这失败了,因为我连接的服务已停止接受 TLS v1.0 和 v1.1 连接,并且只接受 TLS v1.2。如何使我的服务器或代码适应这种变化?
我已经看到其他报告说这可以在 Java 8 中完成,但是是否可以在不更新 Java 版本的情况下完成?
更新
我在上面的“设置”之前添加了以下内容:
System.setProperty("https.protocols", "TLSv1.2");
Socket socket = SSLSocketFactory.getDefault().createSocket();
String[] tlsVersions = {"TLSv1.2"};
((SSLSocket)socket).setEnabledProtocols(tlsVersions);
但是,我在 Google App Engine 上收到错误 Received fatal alert: handshake_failure。谁能给点建议?
【问题讨论】:
-
如果可以设置java环境变量请参考stackoverflow.com/questions/34609384/…
-
@spdev 如何设置 Java 环境变量?
标签: java google-app-engine ssl environment-variables tls1.2