SSLSocket握手:套接字超时

时间:2015-05-17 02:03:58

标签: java sockets ssl amazon-web-services sni

我会尝试尽可能多地提供详细信息:

我在Windows m1.small AWS实例上运行Java 8u45程序。我正在尝试做类似的事情:

SSLSocket sslSocket = (SSLSocket)sslSocketFactory.createSocket(socket, hostname, port, true);
sslSocket.setEnabledProtocols(new String[] {"TLSv1", "TLSv1.1", "TLSv1.2"});
sslSocket.startHandshake();

这个位代码代码一般都有效。但对于特定站点,如果设置了主机名,则startHandshake()会在大约一分钟后抛出异常,说明套接字超时。如果我没有指定主机名(即它为空),则握手通过并且不会发生超时。

奇怪的是,在Java 8u45之前,实例使用的是Java 7u79,并且从未遇到过这个问题。此外,如果我在本地运行相同的代码,握手也会毫无问题地通过。

我认为这是一个SNI问题,但抛出的异常是套接字超时而不是无法识别的名称,所以我不确定为什么在升级到Java 8之后发生/开始发生这种情况。

有没有人知道为什么会发生这种情况?

0 个答案:

没有答案