Nice programing

키 스토어 란?

nicepro 2021. 1. 5. 21:10
반응형

키 스토어 란?


나는 받고있다 :

sun.security.validator.ValidatorException: PKIX path building failed: 
sun.security.provider.certpath.SunCertPathBuilderException: unable to find
valid certification path to requested target
.
.
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.
ValidatorException: PKIX path building failed: sun.security.provider.
certpath.SunCertPathBuilderException: unable to find valid certification 
path to requested target

이 예외를 해결하는 방법을 검색하다가 Keystore이해할 수없는 용어 발견했습니다 . 간단히 말해서 Keystore는 무엇입니까? SSL과 어떤 관련이 있습니까?


Java의 키 저장소 는 컨텍스트에 따라 세 가지를 참조 할 수 있습니다. (모두 밀접하게 관련되어 있지만 미묘하게 다릅니다.)

  • 키 저장소는 개인 키, 인증서 및 대칭 키를 저장할 수있는 저장소가 될 수 있습니다. 이것은 일반적으로 파일이지만 스토리지는 다른 방식으로 처리 될 수도 있습니다 (예 : 암호화 토큰 또는 OS 자체 메커니즘 사용).

  • KeyStore표준 API의 일부인 클래스이기도합니다. 이는 본질적으로 위에서 설명한 "물리적"키 저장소 중 하나를로드, 저장 및 일반적으로 상호 작용하는 방법입니다. KeyStore응용 프로그램에 대한 API 추상화 만 필요한 경우 A 는 순수하게 메모리에있을 수도 있습니다.

    이러한 KeyStore인스턴스 를로드하고 처리하는 방법 은이를 지원하는 키 저장소 파일 (또는 기타 스토리지 시스템)의 형식에 따라 다릅니다. 여러 형식 을 사용할 수 있습니다. 가장 일반적인 것은 JKS 및 PKCS # 12 (.p12)입니다.

  • "keystore"는 "truststore"의 대응으로 사용될 수도 있습니다. "keystore"와 "truststore"는 모두 키 저장소이므로 서로 다른 용도로 사용되기 때문에 혼란 스러울 수 있습니다. 이 답변 에서 자세한 내용을 찾을 수 있습니다 . 키 저장소는 키 관리자를 초기화하는 데 사용되는 반면 신뢰 저장소는 신뢰 관리자를 초기화하는 데 사용됩니다. 로부터 JSSE 레퍼런스 가이드 :

    • A TrustManager는 원격 인증 자격 증명 (및 연결)을 신뢰할 수 있는지 여부를 결정합니다.

    • A KeyManager는 원격 호스트에 보낼 인증 자격 증명을 결정합니다.

    기본적으로 신뢰 저장소로 사용되는 키 저장소에는 신뢰할 수있는 여러 (CA) 인증서가 포함됩니다.이 인증서는 이미 알고 신뢰하지 않는 원격 인증서를 확인하는 데 사용할 신뢰 앵커입니다. 반대로 키 저장소로 사용되는 키 저장소에는 자체 인증서와 개인 키가 포함됩니다. 이것은 원격 당사자에게 자신을 인증하는 데 사용할 것입니다 (필요한 경우).

    JRE ( /lib/security/cacerts) 와 함께 번들로 제공되는 기본 신뢰 저장소가 있습니다 . 일반적으로 사용자에게 더 명시적인 단계이기 때문에 기본 키 저장소가 없습니다.

SSL / TLS의 컨텍스트에서 키 저장소 (키 저장소로 사용되는 키 저장소)는 서버가 인증서와 개인 키를 저장하는 위치 (또는 클라이언트 인증서 인증이 사용되는 경우 클라이언트가 인증서 및 개인 키를 저장하는 위치)입니다. 신뢰 저장소 (신뢰 저장소로 사용되는 키 저장소)는 SSL / TLS 서버에 연결할 때 서버 인증서를 확인할 수 있도록 클라이언트가 신뢰할 수있는 CA의 CA 인증서를 저장하는 곳입니다 (마찬가지로, 서버 측에서는 클라이언트 인증서를 확인하는 데 사용되는 CA 인증서가 저장되는 곳이기도합니다.)

일반적으로 표시되는 오류 ( " ValidatorException: PKIX path building failed")는 연결하려는 서버의 인증서를 사용중인 신뢰 저장소의 인증서를 사용하여 확인할 수 없을 때 발생합니다. 일반적으로 신뢰 저장소에 직접 서버 인증서 (소규모에서만 관리 가능) 또는 해당 서버 인증서를 발행하는 데 사용 된 CA의 CA 인증서 (또는 체인에있는 인증서 중 하나)가 있어야합니다. 선물, 체인이있을 때).


간단히 말해서 SSL 끝점에 대한 연결을 설정하려면 해당 공용 인증서를 신뢰해야합니다. 인증서를 신뢰하려면 자체 또는 발급자의 인증서가 키 저장소에 있어야합니다.

키 저장소를 인증서가 포함 된 폴더 또는 데이터베이스 / 저장소 집합으로 생각하십시오. 물리적으로 JRE ( /lib/security/cacerts) 의 파일입니다 .

이 저장소는 keytoolJRE와 함께 제공 되는 명령 으로 수정할 수 있습니다 . 몇 가지 일반적인 명령 이 링크참조하십시오 . 또 다른 방법은 Java 제어판의 인증서 대화 상자를 사용하는 것입니다 (JRE와 함께 설치됨).

인증서 대화 상자

참조 URL : https://stackoverflow.com/questions/23202046/what-is-keystore

반응형