태그 보관물: protocol

protocol

Java 7에서 클라이언트에 TLS 1.1 및 1.2 사용 두 버전이

Java 7은 클라이언트에 대해 TLS 1.1 및 1.2를 비활성화합니다. 에서 자바 암호화 아키텍쳐 (architecture) 오라클 공급자 문서 :

Java SE 7 릴리스의 SunJSSE가 TLS 1.1 및 TLS 1.2를 지원하지만 클라이언트 연결에 기본적으로 두 버전이 활성화되어 있지 않습니다. 일부 서버는 순방향 호환성을 올바르게 구현하지 않으며 TLS 1.1 또는 TLS 1.2 클라이언트와의 통신을 거부합니다. 상호 운용성을 위해 SunJSSE는 클라이언트 연결에 기본적으로 TLS 1.1 또는 TLS 1.2를 활성화하지 않습니다.

Java 응용 프로그램 솔루션이 아닌 시스템 전체 설정 (아마도 구성 파일을 통해)에서 프로토콜을 활성화하는 데 관심이 있습니다.

TLS 1.1 및 1.2 시스템 전체를 관리적으로 활성화하려면 어떻게합니까 ?

참고 : POODLE부터SSLv3 시스템 전체 관리적으로 비활성화하고 싶습니다. (SSLv3의 문제는 15 년 이상 POODLE보다 오래되었지만 Java / Oracle / Developers는 기본 모범 사례를 따르지 않았으므로 나와 같은 사용자는 혼란을 정리해야합니다.)


Java 버전은 다음과 같습니다.

$ /Library/Java/JavaVirtualMachines/jdk1.7.0_07.jdk/Contents/Home/bin/java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)


답변

-Dhttps.protocols=TLSv1.1,TLSv1.2https 연결 중에 사용해야하는 TLS 프로토콜 버전을 지정하도록 JVM을 구성 하는 다음 특성 을 추가 할 수 있습니다.


답변

Java 1.7을 가정하면 시작 스크립트에 다음과 같은 것을 추가 할 수 있습니다.

JAVACMD="$JAVACMD -Ddeployment.security.SSLv2Hello=false -Ddeployment.security.SSLv3=false -Ddeployment.security.TLSv1=false -D\
deployment.security.TLSv1.1=true -Ddeployment.security.TLSv1.2=true"

다른 제안 : https://blogs.oracle.com/java-platform-group/entry/java_8_will_use_tls


답변

Mac OS X의 Java 7의 경우로 이동 System Preferences > Java하면 Java 제어판이 별도의 창에서 열립니다. 그런 다음 Advanced탭으로 이동하여 Advanced Security Settings섹션으로 스크롤 하여 Use TLS 1.1Use TLS 1.2확인란을 선택하십시오.


답변

방금 최근에 이것을 연구하고 추가하고 싶습니다 .JDK에서는 작동하지 않습니다. deployment.properties는 JRE에서 실행되는 애플릿 및 기타 항목에만 적용됩니다.

JDK 응용 프로그램 (예 : LDAP에 연결해야하는 서버)의 경우 서버는 클라이언트이지만 deployment.security입니다. 작동하지 않습니다.

SSLContext.getInstance ( “TLSv1.2”)와 같은 코드를 작성하지 않으면 변경할 수 없습니다.


답변

데스크톱에서 실행되는 Java 애플릿 및 Java Web Start 프로그램에 대해서는 deployment.security. * 설정이 작동하는 것 같습니다. 다른 사람들이 여기에서 언급했듯이 deployment.properties를 편집하여 지정할 수 있습니다.

다음은 그룹 정책을 사용하여 모든 사용자에 대해 동일한 deployment.properties 파일을 배포하는 방법을 보여주는 기사입니다. http://www.darkoperator.com/blog/2013/1/12/pushing-security-configuration-for- java-7-update-10-via-gpo.html

불행히도 java.exe 또는 javaw.exe를 직접 호출하는 컴퓨터의 모든 Java 프로그램에 대해서는이 기능을 설정할 수 없습니다. java를 사용하는 각 프로그램을 찾아서 java에 전달할 매개 변수를 지정하는 구성 파일을 찾아서 변경해야합니다.

Tomcat의 경우 Tomcat에서 다른 서버로의 연결이 TLS 1.1+ :를 사용하도록이를 전달해야했습니다 -Dhttps.protocols=TLSv1.1,TLSv1.2. Linux에서는 편집 bin/catalina.sh또는을 작성하여 수행 할 수 있습니다 bin/setenv.sh.

Tomcat이 서버 측에서 TLS 1.2 만 사용하는 데 필요한 것이 무엇인지 모르겠습니다. 우리는 Apache HTTP를 사용합니다.


답변

Java 7 -Djdk.tls.client.protocols=TLSv1.1,TLSv1.2을 사용하는 경우 JVM의 인수에 추가 할 수 있습니다 .

여기에는 몇 가지주의 사항이 있습니다.

이러한 단점에도 불구하고, 특히 유용한 프로토콜이 TLS를 사용하지만 HTTPS (예 : LDAPS)가 아닌 경우에 유용 할 수 있다고 생각합니다.

[업데이트] 우분투에서 서버 풀을 운영하는 회사에서는 OpenJDK 7의 121 업데이트조차도 이것을 제대로 구현하기에 충분하지 않다는 것을 깨달았습니다. 작동하기 전에 모든 서버를 업데이트하여 181을 업데이트했습니다.


답변