2011-04-18 9 views
34

나는 cacertsjssecacerts 파일의 차이점을 심각하게 혼동합니다.java에 cacerts 파일과 jssecacerts 파일이 모두있는 이유는 무엇입니까?

기본적으로 자바는 jssecacerts 파일을 찾은 다음 cacerts 파일을 찾습니다.

그러나 jssecacerts 파일의 요점은 무엇입니까?

새로운 신뢰 저장소를 사용해야 할 경우 cacerts 복사본을 만들어야하며 새로운 모든 신뢰할 수있는 CA를 해당 복사본에 추가해야합니다. cacerts (새 CA 포함) 사본은 시스템 등록 정보 -Djavax.net.ssl.trustStore에 의해 참조되어야합니다. 그런 식으로 해당 시스템에서 실행되는 다른 Java 응용 프로그램이 실수로 기본이 아닌 CA를 신뢰하지 않게됩니다.

+0

정말로 3 가지 대답 중 하나를 찾지 못합니까? 당신이 옳다고 생각하는 것을 선택해 주시겠습니까? – JoeG

답변

4

좋은 질문입니다. JSSE가 한때 애드온이었던 것은 역사적인 사실에서 비롯된 것이라고 생각합니다. JSSE는 복수의 프로 바이더를 허가하고 있으므로, jssecacerts는 JSSE 프로 바이더 전용이며, 다른 프로 바이더는 독자적으로 사용할 수 있습니다.

하지만 JSSE 이전에 cacerts를 사용한 사람은 또 하나의 질문입니다.

9

제가 이해 하듯이 cacerts 파일은 기본 제공 파일입니다.

jssecacerts 파일이있는 경우이 파일은 cacerts 파일 외에 독점적으로 사용됩니다.

내 권장 사항 : cacerts 파일을 보관하고 jssecacerts으로 복사하고 jssecacerts 파일에 필요한 개인 CA/서명 인증서를 추가하십시오. Java™ Secure Socket Extension (JSSE) Reference Guide에서

+0

고마워요. 저도 jssecacerts 파일이있는 경우 cacerts에 CA가있는 것이 작동하지 않으며 대신 jssecacerts에 CA를 추가해야합니다. –

+0

@EJP 발송 된 jssecacerts 파일을 "파괴"하지는 않습니다. Jssecacerts 파일은 제공되지 않습니다. jssecacerts에 cacerts를 복사함으로써 Java는 이제 jssecacerts를 대신 사용합니다. 이제 Java와 함께 제공되는 기본값 (cacerts)을 변경하는 것에 대해 걱정할 필요없이'keytool'을 사용하여 jssecacerts에서 원격 인증서를 추가 할 수 있습니다. 변경 사항을 실행 취소하는 것은 디렉토리에서 jssecacerts를 제거하는 것만큼이나 쉽습니다. – DeezCashews

22

TrustManagerFactory는 신뢰 데이터를 찾으려고 다음 단계를 사용

  1. 시스템 프로퍼티 javax.net.ssl.trustStore
  2. java-home/lib/security/jssecacerts
  3. java-home/lib/security/cacerts (기본적으로 제공)

나는이 생각 구성 개념에 대한 관례에 기반합니다. 추가 코딩 작업없이 cacert이 사용됩니다. 추가 개인 CA/서명 인증서의 경우 개발자는 첫 번째 또는 두 번째 방법을 사용할 수 있습니다. 개발자는 특정 인증서를 포함하지만 나중에 인증서 목록을 포함 할 수 있습니다.

+4

일단 1, 2 또는 3이 발견되면 요점이 독점적으로 사용되므로 jssecacerts는 모든 certs를 포함해야합니다. – JoeG