java - 使用 Apache Http Client 4.5.3 从 jdk1.6.0_45 向 API 网关发出简单的 POST 请求

标签 java amazon-web-services apache ssl

你好,

我正在尝试使用 Apache Http Client 4.5.3 从 jdk1.6.0_45 向 API 网关发送 POST 请求

public class App {

public static void main(String[] args) throws IOException {
    System.setProperty("javax.net.debug", "ssl");

    HttpClient connection = HttpClientBuilder.create().build();
    String url = "https://76mpviml3c.execute-api.us-east-1.amazonaws.com/agstage/";
    HttpPost request = new HttpPost(url);

    connection.execute(request);
}

我得到 javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure.

你能帮我理解我做错了什么吗?

顺便说一句:AmazonS3Client (aws-java-sdk-s3 rev="1.11.109") 在 jdk1.6.0_45 上运行良好

日志:

触发 SecureRandom 的播种 完成播种 SecureRandom 允许不安全的重新协商:false 允许遗留问候消息:true 是否初始握手:true 是否安全重新协商:false %% 没有缓存的客户端 session *** ClientHello, TLSv1 RandomCookie: GMT: 1490949205 字节 = { 187, 178, 36, 198, 107, 55, 182, 178, 107, 167, 74, 180, 59, 166, 13, 66, 247, 17, 201, 9, 36, 195, 234, 237, 68, 23, 124, 177 } session ID:{} 密码套件:[SSL_RSA_WITH_RC4_128_MD5、SSL_RSA_WITH_RC4_128_SHA、TLS_RSA_WITH_AES_128_CBC_SHA、TLS_DHE_RSA_WITH_AES_128_CBC_SHA、TLS_DHE_DSS_WITH_AES_128_CBC_SHA、SSL_RSA_WITH_ 3DES_EDE_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA,SSL_RSA_WITH_DES_CBC_SHA,SSL_DHE_RSA_WITH_DES_CBC_SHA,SSL_DHE_DSS_WITH_DES_CBC_SHA,SSL_RSA_ EXPORT_WITH_RC4_40_MD5,SSL_RSA_EXPORT_WITH_DES40_CBC_SHA,SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA,SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA,TLS_EMPTY_RENEGOTIATION_INFO_SCSV] 压缩方法:{ 0 }


主要,写入:TLSv1 握手,长度 = 75 线程“main”中的异常 javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure 在 com.sun.net.ssl.internal.ssl.Alerts.getSSLException (Alerts.java:174) 在 com.sun.net.ssl.internal.ssl.Alerts.getSSLException (Alerts.java:136) 在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1822) 在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1004) 在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1188) 在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1215) 在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1199) 在 org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:396) 在 org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:355) 在 org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142) 在 org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:359) 在 org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:381) 在 org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237) 在 org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185) 在 org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) 在 org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111) 在 org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) 在 org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) 在 org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108) 在 org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) 在 App.main(App.java:18) 主要,阅读:TLSv1 警报,长度 = 2 主要,RECV TLSv1 警报:致命,握手失败 主要,称为 closeSocket() 主要,处理异常:javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure

最佳答案

我在使用 AWS + Java7 + HTTPClient4.3 时遇到了类似的问题;将 Apache HTTPClient 升级到 v4.5.7 修复了它。查看此版本是否解决了您的问题。

关于java - 使用 Apache Http Client 4.5.3 从 jdk1.6.0_45 向 API 网关发出简单的 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46689593/

相关文章:

java - 为什么编译器无法识别Math.PI()?

amazon-web-services - AWS 批量限制单个主机上的容器数量

android - 如何在 Android 应用程序中播放来自 Amazon S3 的视频?

java - 为什么 Java 应用程序需要应用程序服务器来托管?

php - 如何阻止对指定目录中的php文件的直接请求?

java - 使用套接字向特定客户端发送消息

java - 是否可以解析这些日期

java - 如何使用hibernate在spring boot中实现分页

java - 使用 QuerySpec 从 DynamoDB 获取记录

java - SEVERE : Could not contact localhost:8005. Tomcat 在关闭时可能没有运行错误