2014-09-23 2 views
0

웹 서비스 호출 중에 다른 서버에 인증서 (클라이언트)를 보내는 데 문제가 있습니다. 우리는 CN과 인증서를 반환 할 것으로 예상하고양방향 SSL에서 사용할 인증서 결정

: 우리는 서버 인증서를받을 때마다 그러나

b2b-test 

을 우리 자신의 전송을 시도, 우리는 있어요 :

Unable to find valid certificate path to requested target 

에서 나의 이해, 만약 우리가 우리의 keystore jre/lib/security/cacerts 안에 b2b-test를 넣으면, 서버 요청을받을 때 적절한 인증서를 보내야한다.

클라이언트는 키 스토어에서 어떤 키를 서버에 보내야하는지 어떻게 알 수 있습니까? 요청하는 동안 보낼 정확한 인증서를 지정해야합니까, 아니면 키 스토어에있을만큼 충분합니까? 내가 좋아하는 그것을 구성하는 경우

https://b2b-a/service 

:

*** Certificate chain 
chain [0] = [ 
[ 
    Version: V3 
    Subject: CN=b2b-a, OU=Web Technologies 

서비스의 URL은 다음과 같습니다

현재 서버가

b2b-a 

인증서 체인 쇼 인증서를 다시 보내는 편도 SSL을 사용하고 서버 인증서를 우리의 cacerts에 넣으면 인증서가 nd는 핸드 셰이크에 실패합니다 (나는 양방향 설정이기 때문에 우리의 인증서를 기대하고 있기 때문에 자신의 인증서를 기대하지 않기 때문에 추측합니다).

나는 약간 혼란 스럽다. 내가 말한 것에 대한 명확한 설명은 크게 감사하겠습니다.

답변

1

"요청 된 대상에 대한 유효한 인증서 경로를 찾을 수 없습니다"오류는 일반적으로 상대방이 체인의 인증서를 신뢰하지 않는 인증서를 한쪽에서 전달할 때 발생합니다. 일반적으로 (항상?) 인증서를받는 쪽 (신뢰 저장소가 누락 된 쪽)에 오류 메시지가 표시됩니다.

클라이언트이고 서버 인 경우 단방향 SSL은 사용자의 인증서를 사용자에게 보내고 유효성을 검사합니다 (호스트 이름이 인증서의 내용과 일치하는지 확인). 당신에게서 그 어떤 증명서도 보내지 않을 것이고 어떤 검증도하지 않을 것입니다.

b2b-a 인증서 나 인증서 서명에 사용 된 인증서가 포함 된 트러스트 스토어를 구성해야합니다 (인증서에는 루트 CA가없는 것으로 나타나기 때문에 직접 cert 자체를 가져 오는 것으로 붙어 있습니다.) 그래서 네, 당신은 당신이 당신의 포스트에서 쓴 것을하고 싶고 그들의 인증서를 당신의 cacerts에 넣기를 원합니다. 또한 b2b-a 서비스가 보내는 인증서 (또는 인증서를 서명하는 데 사용 된 루트 CA)를 신뢰해야하므로 인증서를 자신의 인증서에 넣어야합니다. cacerts도, 또는 동등한 것을하십시오.

cacerts (또는 트러스트 스토어 JKS)에 인증서를 넣는 것은 이 아닙니다.은 누구에게나 인증서를 보냅니다. 모든 트러스트 스토어는 으로 만 사용되어 사용자가 인증서를 신뢰했거나 인증서에 서명하는 데 사용 된 CA 인증서를 신뢰했기 때문에 다른 사람이 제공 한 인증서를 신뢰할 수 있음을 확인할 수 있습니다. cacerts 디렉토리에서 다른 컴퓨터로 보내지는 인증서가 선택되지 않습니다.

JRE 디렉토리 대신 JKS 디렉토리를 사용하는 경우 (일반적으로 더 좋은 아이디어입니다. 프로세스 내에서 Java 프로젝트를 실행하는 모든 사용자에 대한 기본 설정을 변경하지 않고도 신뢰할 수있는 다른 인증서 세트를 지정할 수 있기 때문입니다. JRE)를 사용하면 키 스토어와 트러스트 스토어 모두에서 동일한 JKS를 사용할 수 있습니다 (키 스토어와 트러스트 스토어 등록 정보 모두에 대해 동일한 파일 이름과 비밀번호를 제공하기 만 함). 두 가지 방법 모두 효과적입니다.

1

우리의 인증서 b2b-test를 keystore jre/lib/security/cacerts 안에 넣으면 서버 요청을받을 때 적절한 인증서를 보내야합니다.

확실히 아닙니다. 그것은 신뢰 저장소입니다. 신뢰할 수있는 인증서의 출처. 그것을 망쳐 놓지 마십시오. 그것은 당신이 필요로하는 목적을 위해 사용되지 않으며 어떠한 경우에도 당신의 변경 사항을 파괴하는 모든 Java dot release를 업데이트합니다.

당신의 자신의 인증서와 개인/공개 키 쌍은 javax.net.ssl.keyStorejavax.net.ssl.keyStorePassword 시스템 특성에 의해 JSSE에 정의 된 스토어, 또는 JSSE 레퍼런스에 설명 된 더 복잡한 방법으로 자신의 파일에 가야한다 안내서.

키 저장소는 개인 키가 들어있는 소중한 기밀 파일입니다. 보호하고 보호하십시오. 개인 키 누출은 보안 및 신원을 손상시킵니다.