Programing

신뢰 저장소 및 키 저장소 정의

lottogame 2020. 3. 24. 08:01
반응형

신뢰 저장소 및 키 저장소 정의


키 저장소와 신뢰 저장소의 차이점은 무엇입니까?


키 저장소에는 개인 키와 해당 공개 키가있는 인증서가 포함됩니다.

신뢰 저장소에는 통신하려는 다른 당사자 또는 다른 당사자를 식별하기 위해 신뢰하는 인증 기관의 인증서가 포함됩니다.


  1. 키 저장소에는 개인 키가 포함되어 있습니다. 서버이거나 서버에 클라이언트 인증이 필요한 경우에만 필요합니다.

  2. 신뢰 저장소에는 신뢰할 CA 인증서가 포함됩니다. 서버의 인증서가 공인 된 CA에 의해 서명 된 경우 JRE와 함께 제공되는 기본 신뢰 저장소는 이미 신뢰할 수있는 CA를 신뢰하기 때문에 이미 신뢰합니다. 따라서 자체 인증서를 작성하거나 인증서를 추가 할 필요가 없습니다. JRE에서.

출처


SSL 데이터 교환 에서 trustStore 의 목적은 자격 증명을 확인 하는 것이며 keyStore 의 목적은 자격 증명을 제공 하는 것입니다 .

키 스토어

Java의 keyStore는 공개 키에 해당하는 개인 키 및 인증서를 저장하며 SSL 서버 또는 SSL 인 경우 클라이언트 인증이 필요합니다.

신뢰 저장소

TrustStore는 타사의 인증서를 저장하고 Java 응용 프로그램이 통신하거나 CA (Verisign, Thawte, Geotrust 또는 GoDaddy와 같은 인증 기관)에서 서명 한 인증서를 저장하여 타사를 식별 할 수 있습니다.

TrustManager

TrustManager는 원격 연결의 신뢰 여부를 결정합니다. 즉, 원격 당사자가 주장하는 사람인지 여부와 KeyManager는 SSL 핸드 셰이크 중 인증을 위해 원격 호스트에 전송해야 할 인증 자격 증명을 결정합니다.

SSL 서버 인 경우 키 교환 알고리즘 중에 개인 키를 사용하고 공개 키에 해당하는 인증서를 클라이언트로 보내면이 인증서는 키 저장소에서 가져옵니다. SSL 클라이언트 측에서 Java로 작성된 경우 trustStore에 저장된 인증서를 사용하여 서버의 ID를 확인합니다. SSL 인증서는 가장 일반적으로 keytool과 같은 키 관리 유틸리티를 사용하여 keyStore 또는 trustStore에 추가되는 .cer 파일 로 제공됩니다 .

출처 : http://javarevisited.blogspot.ch


표준 JSSE 문서의 일부로 Sun의 문서 작성에 관심이있을 수도 있습니다.

http://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#Stores

일반적으로 신뢰 저장소는 X.509 인증과 같은 확인 목적으로 공개 키만 저장하는 데 사용됩니다. 관리 효율성을 위해 관리자 나 개발자가이 두 저장소를 단일 저장소로 간단히 연결하는 것이 일반적입니다.


Java에서 키 저장소와 신뢰 저장소의 차이점은 무엇입니까?

다음은 JSSE (Java Secure Socket Extension) 참조 안내서 의 Java 문서에 대한 설명입니다 . 나는 그것이 당신이 다른 사람들의 말과 다른 것을 말하지 않는다고 생각합니다. 그러나 그것은 공식적인 참조를 제공합니다.

키 저장소 / 신뢰 저장소

키 스토어는 키 자료의 데이터베이스입니다. 키 자료는 인증 및 데이터 무결성을 포함한 다양한 목적으로 사용됩니다. PKCS12 및 Oracle의 JKS를 포함하여 다양한 유형의 키 저장소를 사용할 수 있습니다.

일반적으로 키 저장소 정보는 키 항목과 신뢰할 수있는 인증서 항목의 두 가지 범주로 그룹화 할 수 있습니다. 키 항목은 엔터티의 ID와 개인 키로 구성되며 다양한 암호화 목적으로 사용될 수 있습니다. 반대로 신뢰할 수있는 인증서 항목에는 엔터티의 ID 외에 공개 키만 포함됩니다. 따라서 javax.net.ssl.KeyManager와 같이 개인 키가 필요한 경우 신뢰할 수있는 인증서 항목을 사용할 수 없습니다. JKS의 JDK 구현에서 키 저장소에는 키 항목과 신뢰할 수있는 인증서 항목이 모두 포함될 수 있습니다.

신뢰 저장소는 신뢰할 대상에 대한 결정을 내릴 때 사용되는 키 저장소입니다. 이미 신뢰하는 엔터티에서 데이터를 받고 엔터티가 주장하는 엔터티인지 확인할 수 있으면 해당 엔터티에서 데이터가 실제로 온 것으로 가정 할 수 있습니다.

사용자가 해당 엔티티를 신뢰하는 경우에만 신뢰 저장소에 항목을 추가해야합니다. 키 페어를 생성하거나 인증서를 가져 와서 사용자는 해당 항목을 신뢰합니다. 신뢰 저장소의 모든 항목은 신뢰할 수있는 항목으로 간주됩니다.

하나는 키 항목 만 포함하고 다른 하나는 CA 인증서를 포함하여 신뢰할 수있는 인증서 항목을 포함하는 두 개의 다른 키 저장소 파일을 갖는 것이 유용 할 수 있습니다. 전자는 개인 정보를 포함하지만 후자는 그렇지 않습니다. 단일 키 저장소 파일 대신 두 개의 파일을 사용하면 자신의 인증서 (및 해당 개인 키)와 다른 인증서 간의 논리적 구분을 명확하게 구분할 수 있습니다. 개인 키를보다 안전하게 보호하려면 액세스가 제한된 키 저장소에 키를 저장하고 필요한 경우 공개적으로 액세스 가능한 키 저장소에 신뢰할 수있는 인증서를 제공하십시오.


  1. trustStore와 keyStore의 첫 번째 주요 차이점은 trustManager가 trustStore를 사용하여 원격 연결을 신뢰할 수 있는지 여부를 결정하고, KeyStore는 keyManager를 사용하여 SSL 핸드 셰이크 중 인증을 위해 원격 호스트에 전송해야 할 인증 신임 정보를 결정한다는 것입니다.

  2. 또 다른 차이점은 SSL에 서버를 실행 중이거나 서버 측에서 클라이언트 인증을 활성화 한 경우에만 키 저장소에 이론적으로 필요한 개인 키가 포함된다는 점입니다. 반면에 trustStore는 공개 키 또는 CA (인증 기관)의 인증서를 저장합니다. 원격 당사자 또는 SSL 연결을 신뢰하십시오.

    사실, 그래서 당신은 그 파일을 관리 할 수있는 도구 (키 도구) 같은 것을 주어, 같은 파일을 모두 개인 키와 공개 키에 저장할 수있는 당신이 수 모두 목적을 위해 하나의 파일을 사용하지만, 당신은 아마 .

  3. 적어도 내 Mac OSX에서 기본 키 저장소는 ${user.home}/.keystore이고 기본 신뢰 저장소는 /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts입니다.

    당신이 그들을 무시하고 싶은 경우에 당신은 JVM 매개 변수를 추가해야 -Djavax.net.ssl.keyStore /path/to/keyStore하거나 -Djavax.net.ssl.trustStore /path/to/trustStore. 또는 java.security.UnrecoverableKeyException: Password must not be null매개 변수를 사용하여 키 저장소 비밀번호를 설정해야 할 수도 있습니다.-Djavax.net.ssl.trustStorePassword=password-Djavax.net.ssl.trustStorePassword=password

주 원천:

http://javarevisited.blogspot.co.uk/2012/09/difference-between-truststore-vs-keyStore-Java-SSL.html

참고 URL : https://stackoverflow.com/questions/318441/truststore-and-keystore-definitions

반응형