在Google App Engine上建立TLS v1.2连接

时间:2017-10-02 22:05:52

标签: java google-app-engine ssl environment-variables tls1.2

我有一个Google App Engine Java 7服务器,可以与API建立HTTP连接:

    // 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版本的情况下完成吗?

更新

我在&#39;设置&#39;之前添加了以下内容:以上:

    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。有人可以建议吗?

1 个答案:

答案 0 :(得分:0)

如果您使用的是Windows,请设置环境变量  -Dhttps.protocols = TLSv1.1,TLSv1.2工作