2017-12-11 2 views
0

인증서를 받았고 응용 프로그램 (Java 기반의 Mule을 사용하고 있습니다)을 통해 http 호출을하도록 요청했습니다.인증서를 자바 키 저장소

내가받은 인증서는 .cer 파일입니다. 그것은 내 회사에 고유 한 인증서로, 해당 서버의 공개 키가 있음을 의미한다고 생각합니다.

CER 파일을 제공 한 회사에서 암호를 알려주었습니다. 예 : 아래 그림과 같이 abc1234

<http:request-config name="HTTP_Request_Configuration" protocol="HTTPS" host="hostname.com" port="443" doc:name="HTTP Request Configuration"> 
    <tls:context>   
     <tls:key-store type="jks" path="keystore.ks" alias="1" keyPassword="changeit" password="changeit"/> 
    </tls:context> 
</http:request-config> 

내가 엔드 포인트 있음을 호출하면 ... 다음과 같이

keytool -importcert -file myCert.cer -keystore keystore.ks -alias 1 

내가 다음 내 코드에 그것을 plonked ...

는이 기능을 사용하려면 내가 먼저 명령을 실행 내 응용 프로그램에서 '오류 403 : 누락 된 인증'이 표시됩니다.

이 과정에서 어디에서나 'abc1234'암호를 입력 할 필요가 없었으며 이것이 내가 403을 얻는 이유라고 생각합니다. 암호는 어디에 제공해야합니까?

감사합니다.

+1

브라우저를 통해 사이트에 액세스하려고 했습니까? SSL과 관련이없는 오류 일 수 있습니다. –

+2

자세한 정보를 제공해야합니다. 인증서를 서비스 끝점의 사용자 지정 CA/인증서로 신뢰할 수 있습니까? (우리는 가정 만 할 수 있습니다. 어떻게 확신해야하는지입니다.) EJP는 그의 답변에서 옳았으며, 신뢰할 수있는 인증서는 트러스트 스토어에 속합니다. 403은 '승인되지 않음'을 의미하며 누락 된 부분을 알려주는 서비스 제공 업체 (회사)입니다 (기본 인증 역할, 클라이언트 인증서) – gusto2

답변

-1

인증서 파일은 암호로 보호되지 않습니다. 키 스토어가 있습니다. 따라서 그들이 보낸 것은 인증서가 아니라 완전한 키 저장소 일 수 있습니다. 이러한 키 저장소는 암호 대신 — 키 쌍을 사용하여 TLS 클라이언트 인증 — 인증을 지원하도록 설계되었을 수 있습니다.

인증서는 키 쌍의 절반을 전달합니다. 인증에 사용하려면 개인 키가 필요합니다. 일반적으로 자신의 인증서를 얻으려면 키 쌍을 직접 생성하고 공개 키를 신원과 함께 인증서로 묶어주는 사람에게 보냅니다. 공개 키를 보내는 표준 형식을 CSR 또는 인증서 서명 요청이라고합니다.

Java keytool을 사용하면 키 쌍과 해당 키에 대한 CSR을 생성 할 수 있으며, 나중에 완전히 서명 된 인증서를 가져올 수 있습니다. 이 단계를 수행 했습니까? 누군가가 당신을 위해이 과정을 수행하고 완벽한 키 저장소를 보낼 수도 있지만 "개인 키"를 알고 있습니다.

또는받은 인증서가 클라이언트가 서버를 인증 할 수 있고 연결할 때 클라이언트를 인증하기 위해 사용하는 암호이며 파일을 전혀 보호하지 않을 수도 있습니다. 그러나 인증서에 실제로 귀하의 신원이 표시되어있는 경우 귀하가 말한 것처럼 이것이 의미가 없습니다.

+0

.cer 파일은 인증서입니다. 키 스토어가 아닙니다. – EJP

+0

@EJP 그러나 확장 기능이 올바르게 사용되었는지는 알 수 없습니다. 인증서에는 암호가 없습니다. – erickson

+0

인증서가 아닌 경우'keytool -importcert' 명령이 어떻게 작동 했습니까? – EJP

-1

키 저장소가 아닌 truststore에 추가해야합니다. 이는 자신의 인증서로 사용되지 않고 신뢰할 수있는 인증서입니다. 그것은 당신의 인증서가 아닙니다.

+0

트러스트 앵커는 자신의 회사에만 국한되지 않습니다. – erickson

+0

@erickson 당신은 내 대답에 나타나지 않는 단어를 사용하고 있습니다. 자체 서명 된 서버 인증서는 자신의 회사에만 한정됩니다. 나는 희망. 자신의 인증서 인 경우 개인 키는 어디에 있습니까? – EJP

1

귀하의 의견에 감사드립니다. 모든 대답과 논평은 나를 도왔습니다.

결국 인증서에 암호가없고 (주석에 언급 된 바와 같이) 암호가 나열되어 있지 않은 것으로 나타났습니다.

403은 SSL 핸드 셰이크 오류로 인해 발생했으며 CA 인증서를 찾지 못했습니다.

나는 SSL 핸드 셰이크 로그를 켜서 만 찾을 수있었습니다.

+0

안녕하세요, HTTP-403을 받으면 일반적으로 HTTP 코드가 SSL 레이어 위에 있기 때문에 성공적인 SSL 연결을 의미합니다. 귀하의 설명 후 나는 인증서 유효성 검사 문제를 나타내는 Chainverifier Exception을 예상했을 것입니다. – SkateScout