2017-03-08 88 views
2

Java 7 Oracle은 TLSv1.2를 지원하지 않습니다. 내 코드를 실행하려고 노력하고 난 다음 일을 시도 :Java 7 Oracle은 TLSv1.2를 지원하지 않습니다.

System.setProperty("deployment.security.TLSv1.1", "false") 
    System.setProperty("deployment.security.TLSv1", "false") 
    System.setProperty("deployment.security.TLSv1.2", "true") 
    System.setProperty("https.protocols", "TLSv1.2") 
    System.setProperty("https.cipherSuites", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,AES_256_GCM,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384") 

를 그것은 도움이되지 않습니다.

Java7 애플리케이션에 Tlsv1.2를 강제로 적용하려면 어떻게해야합니까? 기본적으로 TLS1.2를 사용하는 java8을 사용하여 프로그램을 실행할 수 있으며 모든 것이 완벽하게 작동합니다.

Java7에서 oracle로 어떻게 할 수 있습니까?

나는 또한 /usr/lib/jvm/java-7-oracle/jre/lib/security에 들어가려고했지만 jdk.tls.disabledAlgorithms=SSLv2Hello, SSLv3, TLSv1을 사용할 수 없지만 여전히 작동하지 않습니다.

내가 잘못 했나요?

가 오류 :

0000: 02 28            .(
main, READ: TLSv1 Alert, length = 2 
main, RECV TLSv1 ALERT: fatal, handshake_failure 
main, called closeSocket() 
main, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 
166 [main] DEBUG org.apache.http.impl.conn.DefaultClientConnection - Connection [email protected] closed 
166 [main] DEBUG org.apache.http.impl.conn.DefaultClientConnection - Connection [email protected] shut down 
main, called close() 
main, called closeInternal(true) 


[main] DEBUG org.apache.http.impl.conn.BasicClientConnectionManager - Releasing connection [email protected] 
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) 
     at sun.security.ssl.Alerts.getSSLException(Alerts.java:154) 
     at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1979) 
     at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1086) 
     at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332) 
     at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359) 
     at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343) 
     at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:533) 
     at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:401) 
     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:177) 
     at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:304) 
     at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:611) 
     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:446) 
     at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863) 
     at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72) 
     at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:214) 
     at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:160) 
+0

응용 프로그램이 바람둥이에서 실행됩니다? –

+0

아니요. 나는 서비스에 GET 요청을하고있다. java8을 사용하면 쉽게 할 수 있습니다. 또한 내 Chrome 브라우저를 사용하여 요청의 결과를 볼 수 있습니다. – orange14

+0

SSL 컨텍스트는 어떻게 구합니까? 'SSLContext context = SSLContext.getInstance ("TLSv1.2");'? – dosdebug

답변

0

내가 내 자신의 질문에 대답 것입니다.

Java-7-oracle에는 TLS1.2를 사용할 수 없습니다. 심지어 시스템 속성을 사용하여 구성하거나 심지어 SSLContext 수준으로 설정해도 도움이되지 않았습니다. 그들의 지원은 매우 나쁩니다. Java-8-oracle에 있지만 가능합니다.

단순히 내 자바를 java-7-openjdk-amd64으로 바꾸는 것은 저를 위해 트릭을 만들었습니다.

1

제가 아파치 HTTP 클라이언트 라이브러리를 사용하여 내 요청을 한 이후이 같은 문제로 실행하고, 나는 그것을 해결

는 Btw은 내가 sslhandshakeexception-handshake-failure

편집 수 이 방법으로 내 HttpClient 초기화

CloseableHttpClient client = HttpClients.custom() 
           .setSSLSocketFactory(getSSLContext()) 
           .build(); 

여기서

나는 모든 것을 시도 이일 지출 결국 나는 그것을 알아 냈 : 29,631,방법은 누군가가 비슷한 문제가 넣다이

+0

불행히도 org.apache.http.client.methods.HttpUriRequest 사용하고 있습니다. 많은 클래스가 그것을 상속 받기 때문에 수정하고 싶지 않은 수퍼 클래스에서 가져 오기. 다른 사람이 5 년 전에 그 코드를 썼다. – orange14

0

당신은 JRE를 들어 오라클 사이트에서 1.7.0_131-B31 1.7.0_131-B31

에 자바 7 버전을 업그레이드 할 수 있습니다

TLSv1.2 and TLSv1.1 are now enabled by default on the TLS client end-points. This is similar behavior to what already happens in JDK 8 releases.