Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javassl:;致命错误:80:。。。“展开网络记录”;添加HTTPS EndpointIdentificationAlgorithm后_Java_Ssl_Hostname - Fatal编程技术网

javassl:;致命错误:80:。。。“展开网络记录”;添加HTTPS EndpointIdentificationAlgorithm后

javassl:;致命错误:80:。。。“展开网络记录”;添加HTTPS EndpointIdentificationAlgorithm后,java,ssl,hostname,Java,Ssl,Hostname,Java 7u9 标题中的错误消息是:“致命错误:80:打开网络记录时出现问题”。所以我不会把“问题”放在标题里 我正在针对Netty构建一个JavaHTTPS客户端。SSL握手一直有效,直到我添加了“HTTPS”端点识别算法以启用服务器主机名验证: SSLEngine engine = tcpHelper.getSSLContext().createSSLEngine(); SSLParameters sslParameters = engine.getSSLParameters(); ssl

Java 7u9

标题中的错误消息是:“致命错误:80:打开网络记录时出现问题”。所以我不会把“问题”放在标题里

我正在针对Netty构建一个JavaHTTPS客户端。SSL握手一直有效,直到我添加了“HTTPS”端点识别算法以启用服务器主机名验证:

SSLEngine engine = tcpHelper.getSSLContext().createSSLEngine();
SSLParameters sslParameters = engine.getSSLParameters();
sslParameters.setEndpointIdentificationAlgorithm("HTTPS");
engine.setSSLParameters(sslParameters);
engine.setUseClientMode(true);
添加算法后,SSL握手挂起,连接最终超时。启用SSL调试(javax.net.debug=all)后,我可以看到握手现在在ServerHello之后、服务器发送证书链之后、之后失败

*** ServerHelloDone
1761586552@qtp-1653588482-2, WRITE: TLSv1.2 Handshake, length = 3294
在服务器上。客户端接收并显示证书链,然后失败:

New I/O  worker #3, fatal error: 80: problem unwrapping net record
java.lang.RuntimeException: Delegated task threw Exception/Error
%% Invalidated:  [Session-1, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256]
New I/O  worker #3, SEND TLSv1.2 ALERT:  fatal, description = internal_error
New I/O  worker #3, WRITE: TLSv1.2 Alert, length = 2
Java 7u9

首先,感谢布鲁诺的帮助,这让我得到了最后的答案

回答我自己的问题。来之不易的知识

解决方案是在创建SSL引擎时将请求目标的主机和端口添加到构造函数:

SSLEngine engine = tcpHelper.getSSLContext().createSSLEngine(targetHost, targetPort);
如果没有这一点,Java最终将在SSL LIB(IPAddressUtil.textToNumericFormatV4)的深处抛出一个NullPointerException,这将在SSL调试输出中产生一条没有多大帮助的错误消息