2012-12-01 3 views
1

내 트러스트 스토어가 내 프로그램에서 사용되고 있는지 알려주는 함수가 있습니까? 창에서 기본 신뢰 저장소는 JAVA_HOME \ lib \ security \ cacerts에 있습니다.디스크의 현재 신뢰 저장소를 프로그래밍 방식으로 찾는 방법은 무엇입니까?

그러나 기본값은 다양한 방법으로 변경할 수 있습니다. Keystore 클래스를 사용하여 명령 줄

  • -Djavax.net.ssl.keyStore를 사용

    • .

    • 응용 프로그램이 실행되는 응용 프로그램 서버에서 프로그램이 실행중인 경우 해당 패널을 통해 저장소 경로를 설정할 수 있습니다.

    • 프로그램이 Tomcat에서 실행 중이면 Tomcat 설정에 따라 신뢰 저장소가 변경 될 수 있습니다.

    및 많은 다른 방법.

    현재 활성 상태 인 트러스트 스토어의 디스크 경로를 찾을 수있는 프로그래밍 방식이 있습니까?

  • +0

    이 정확히 무엇입니까 해결해야 할 문제가 있습니까? –

    +0

    @ ThorbjørnRavnAndersen - 때때로 질문 뒤에 다른 질문이 없습니다 :-) – user93353

    +0

    그런 다음 JDK의 소스 코드를 얻고 코드가하는 것을보십시오. 운이 좋다면 Java 콘솔에서 사용할 수있는 기능을 알려주는 로그 문이 있습니다. –

    답변

    7

    일반적으로 말할 수는 없습니다 (this question과 매우 유사합니다).

    JSSE API에서 인증서 신뢰는 실제로 신뢰 저장소에 의해 결정되지 않고 TrustManager으로 결정됩니다. 키 스토어 (트러스트 스토어)로 초기화되는 일도 있습니다 만, 이것은 필수는 아닙니다. 또한 keystores themselves don't have to be files. 기본 신뢰 관리자 API에는 잠재적 인 신뢰 저장소가 사용 된 위치와 방법을 확인할 수있는 것이 없습니다.

    트러스트 매니저를 얻을 수 있습니다 당신은 SSLSocketFactory 다시 연락 할 수있는 SSLSocket 심지어 아무것도, 당신은 그것의 SSLContext을 원래로 돌아갈 수있다 아무것도, 거기에 아무것도 없습니다.

    현재 어떤 truststore/trust manager가 활성화되어 있는지도 응용 프로그램에 따라 다릅니다. 응용 프로그램이 만드는 연결은 기본값 SSLContext을 사용하고 있으며 이는 javax.net.ssl.* 시스템 속성으로 초기화 할 수 있음을 일반적으로 알려주지는 않습니다. 응용 프로그램은 자신의 소켓을 만들기 위해 자신의 SSLContext을 초기화 할 수 있습니다 (특정 값을 지정할 때 Tomcat이 해당 커넥터에 대해 수행하는 작업 임).

    는 자바 6 있기 때문에 기본 (현재) SSLContextSSLContext.setDefault(...)를 통해 (세계적으로 변경할 수 있습니다.

    당신은 JSSE Reference Guide에서 기본적으로 사용하고 있는지. 나머지는 각 응용 프로그램의 설명서에 따라 달라집니다 찾을 수 있습니다. -Djavax.net.debug=SSL,trustmanager를 사용하면 도움이 필요한 경우,하지만이 API에 액세스하지 않습니다 수 있습니다.

    (그건 그렇고, -Djavax.net.ssl.keyStore 기본 키 관리자가 아닌 신뢰 저장소에 대한 키 스토어를 설정합니다.)

    +2

    여전히'-Djavax.net.debug = SSL, trustmanager'는'trustStore is : C : \ Program Files \ Java \ jdk1.7.0_01 \ jre \ lib \ security \ cacerts' 로그를 제공합니다. (Java 8을 실행하고 있었지만) – jmd

    관련 문제