키 스토어 란?
나는 받고있다 :
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
) 의 파일입니다 .
이 저장소는 keytool
JRE와 함께 제공 되는 명령 으로 수정할 수 있습니다 . 몇 가지 일반적인 명령 은 이 링크 를 참조하십시오 . 또 다른 방법은 Java 제어판의 인증서 대화 상자를 사용하는 것입니다 (JRE와 함께 설치됨).
참조 URL : https://stackoverflow.com/questions/23202046/what-is-keystore
'Nice programing' 카테고리의 다른 글
스크립트의 인수를 사용하여 두 번째 스크립트를 호출합니다. (0) | 2021.01.05 |
---|---|
Vagrant 구성 설정을 로컬로 재정의 (개발자 별) (0) | 2021.01.05 |
Visual Studio Code에서 설정을 재설정하는 방법은 무엇입니까? (0) | 2021.01.05 |
텍스트 파일에 사전 쓰기? (0) | 2021.01.05 |
Tomcat 8은 '|'로 요청 받기를 처리 할 수 없습니다. (0) | 2021.01.05 |