SSLException:收到致命警报:internal_error(在 tomcat 下抛出,但在桌面上运行良好)
SSLException: Received fatal alert: internal_error (thrown under tomcat, but works fine in desktop)
当我在桌面应用程序中应用该代码时:
WebClient webClient = new WebClient();
WebRequest wreq = new WebRequest( new URL (url), com.gargoylesoftware.htmlunit.HttpMethod.GET);
HtmlPage p = (HtmlPage) webClient.getPage( wreq);
它工作正常,我得到一个答案:
[Raw read]: length = 5
0000: 16 03 03 00 5D ....]
[Raw read]: length = 93
(然后进行握手)
但是当我尝试在 tomcat 的网络应用程序中使用完全相同的代码时,它显示错误:
[Raw read]: length = 5
0000: 15 03 03 00 02 .....
[Raw read]: length = 2
0000: 02 50 .P
tt_20170131_142449, READ: TLSv1.2 Alert, length = 2
tt_20170131_142449, RECV TLSv1.2 ALERT: fatal, internal_error
tt_20170131_142449, called closeSocket()
tt_20170131_142449, handling exception: javax.net.ssl.SSLException: Received fatal alert: internal_error
TLS 版本相同。我尝试了一些通常在这种情况下建议的事情,比如 webClient.getOptions().setUseInsecureSSL( false) 等等,但是,正如我所说,这看起来不像是协议问题,因为完全相同的代码工作得很好而 运行 没有 tomcat。那么我应该去哪里挖掘才能找到解决方案呢?
还有不同长度的 MD5 和 SHA1 哈希:
[写入] MD5 和 SHA1 哈希:len = 161 <--- 导致异常
[写入] MD5 和 SHA1 哈希:len = 213 <--- 工作正常
通过将 httpclient-4.3.1.jar 替换为 4.3.3 版本解决。
当我在桌面应用程序中应用该代码时:
WebClient webClient = new WebClient();
WebRequest wreq = new WebRequest( new URL (url), com.gargoylesoftware.htmlunit.HttpMethod.GET);
HtmlPage p = (HtmlPage) webClient.getPage( wreq);
它工作正常,我得到一个答案:
[Raw read]: length = 5
0000: 16 03 03 00 5D ....]
[Raw read]: length = 93
(然后进行握手)
但是当我尝试在 tomcat 的网络应用程序中使用完全相同的代码时,它显示错误:
[Raw read]: length = 5
0000: 15 03 03 00 02 .....
[Raw read]: length = 2
0000: 02 50 .P
tt_20170131_142449, READ: TLSv1.2 Alert, length = 2
tt_20170131_142449, RECV TLSv1.2 ALERT: fatal, internal_error
tt_20170131_142449, called closeSocket()
tt_20170131_142449, handling exception: javax.net.ssl.SSLException: Received fatal alert: internal_error
TLS 版本相同。我尝试了一些通常在这种情况下建议的事情,比如 webClient.getOptions().setUseInsecureSSL( false) 等等,但是,正如我所说,这看起来不像是协议问题,因为完全相同的代码工作得很好而 运行 没有 tomcat。那么我应该去哪里挖掘才能找到解决方案呢?
还有不同长度的 MD5 和 SHA1 哈希:
[写入] MD5 和 SHA1 哈希:len = 161 <--- 导致异常
[写入] MD5 和 SHA1 哈希:len = 213 <--- 工作正常
通过将 httpclient-4.3.1.jar 替换为 4.3.3 版本解决。