Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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
Java Spring引导中的TLSv1.2错误_Java_Spring_Ssl_Spring Boot - Fatal编程技术网

Java Spring引导中的TLSv1.2错误

Java Spring引导中的TLSv1.2错误,java,spring,ssl,spring-boot,Java,Spring,Ssl,Spring Boot,在spring引导中进行ssl连接时出错 http-nio-8081-exec-1, WRITE: TLSv1.2 Handshake, length = 193 [Raw write]: length = 198 0000: 16 03 03 00 C1 01 00 00 BD 03 03 59 0F F5 50 BA ...........Y..P. 0010: AC 01 0A A6 F9 AB 1C C6 B5 50 B1 4E 2A 0E D2 4B .........P.

在spring引导中进行ssl连接时出错

http-nio-8081-exec-1, WRITE: TLSv1.2 Handshake, length = 193
[Raw write]: length = 198
0000: 16 03 03 00 C1 01 00 00   BD 03 03 59 0F F5 50 BA  ...........Y..P.
0010: AC 01 0A A6 F9 AB 1C C6   B5 50 B1 4E 2A 0E D2 4B  .........P.N*..K
0020: C1 7C 75 7B 90 70 A3 6A   20 30 C1 00 00 3A C0 23  ..u..p.j 0...:.#
0030: C0 27 00 3C C0 25 C0 29   00 67 00 40 C0 09 C0 13  .'.<.%.).g.@....
0040: 00 2F C0 04 C0 0E 00 33   00 32 C0 2B C0 2F 00 9C  ./.....3.2.+./..
0050: C0 2D C0 31 00 9E 00 A2   C0 08 C0 12 00 0A C0 03  .-.1............
0060: C0 0D 00 16 00 13 00 FF   01 00 00 5A 00 0A 00 34  ...........Z...4
0070: 00 32 00 17 00 01 00 03   00 13 00 15 00 06 00 07  .2..............
0080: 00 09 00 0A 00 18 00 0B   00 0C 00 19 00 0D 00 0E  ................
0090: 00 0F 00 10 00 11 00 02   00 12 00 04 00 05 00 14  ................
00A0: 00 08 00 16 00 0B 00 02   01 00 00 0D 00 18 00 16  ................
00B0: 06 03 06 01 05 03 05 01   04 03 04 01 03 03 03 01  ................
00C0: 02 03 02 01 02 02                                  ......
http-nio-8081-exec-1, handling exception: java.net.SocketException: Connection reset
http-nio-8081-exec-1, SEND TLSv1.2 ALERT:  fatal, description = unexpected_message
http-nio-8081-exec-1, WRITE: TLSv1.2 Alert, length = 2
http-nio-8081-exec-1, Exception sending alert: java.net.SocketException: Connection reset by peer: socket write error
http-nio-8081-exec-1, called closeSocket()
[2m2017-05-08 14:26:40.714[0;39m [31mERROR [CS Facade,,,][0;39m [35m6360[0;39m [2m---[0;39m [2m[nio-8081-exec-1][0;39m [36mo.a.c.c.C.[.[.[/].[dispatcherServlet]   [0;39m [2m:[0;39m Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.client.ResourceAccessException: I/O error on GET request for "<URL>": Connection reset; nested exception is java.net.SocketException: Connection reset] with root cause

java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(Unknown Source)
    at java.net.SocketInputStream.read(Unknown Source)
    at sun.security.ssl.InputRecord.readFully(Unknown Source)
    at sun.security.ssl.InputRecord.read(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)
    at org.springframework.http.client.SimpleBufferingClientHttpRequest.executeInternal(SimpleBufferingClientHttpRequest.java:78)
    at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48)
    at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:652)    
还尝试在application.properties中设置

server.ssl.protocol=TLS
我已经通过编程启用了ssl

@Bean
  public EmbeddedServletContainerFactory servletContainer() {
      TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
      tomcat.addAdditionalTomcatConnectors(createStandardConnector());
      return tomcat;
  }

  private Connector createStandardConnector() {
      Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
      connector.setPort(Integer.valueOf(port));
      return connector;
  }
有人提到,问题在于java版本

我使用的是java版本“1.8.091”和spring boot:1.5.2.0版本

是因为服务器jks文件是在旧版本的java中生成的吗?请就这个问题提供一些见解

一些见解(我希望)但不是答案:

QYou链接中的问题是Java版本6,它在2011年初仍然是最新版本,默认情况下,它尝试与SSLv2格式协商(尽管即使是6也不会实际协商SSLv2协议)。您使用的8默认为modern format和max protocol TLSv1.2,Q中的跟踪证实了这一点(ClientHello提供了wire版本0303,即TLSv1.2),并且没有合理的服务器需要更多,因为1.3尚未出炉。错误的版本或格式只是SSL/TLS握手期间重置的一个可能原因;还有很多其他的

最近的Java8默认为TLSv1.2、TLSv1.1、TLSv1(.0)的https.protocols。添加SSLv3是个坏主意;自2011年(以及自“8u0”以来)以来的几年中,它已经被打破。任何实际协商SSLv3的服务器都可能是由不称职的人操作的,不应该使用

Tomcat连接器是关于传入HTTP和/或HTTPS(TLS)连接的。它与传出连接无关

来自旧版本Java的JKS文件没有问题,除非旧版本使用非标准加密提供程序,而新/当前版本不使用,并且在任何情况下,server.JKS同样适用于传入连接,而不是传出连接,另外,任何密钥库问题都可能发生在发送ClientHello消息之前或在接收到服务器的证书消息之后,您的跟踪和stacktrace都会发生冲突

你最好的办法是从服务器上找出它不喜欢的东西——直接像日志一样,或者通过它的运营商

然而,通过查看,我发现有一种可能性——您的堆栈没有发送servername或SNI。从技术上讲,这是TLS中的一个选项,但近年来许多服务器程序(和服务器)已经开始需要它,尽管出于这个原因拒绝Hello的服务器应该使用警报而不是重置。Java 8应该自动为HttpsUrlConnection发送SNI,除非某人或某物已将系统属性
jsse.enableSNIExtension
配置为false,或者URL的主机名部分是单个“标签”(无点)或IP地址——您是否正在执行这些操作

@Bean
  public EmbeddedServletContainerFactory servletContainer() {
      TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
      tomcat.addAdditionalTomcatConnectors(createStandardConnector());
      return tomcat;
  }

  private Connector createStandardConnector() {
      Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
      connector.setPort(Integer.valueOf(port));
      return connector;
  }