2012-10-15 3 views
0

나는 서스펜션을 사용하여 java로 작성된 서버 (동일한 중고품 파일을 사용하여 서버와 클라이언트 모두에 대해 생성 된 코드)에 안전하게 호출하는 C++ 클라이언트를 작성합니다. 저는 SSL 통신의 초보자입니다. 자바 서버 쪽에서 클라이언트의 공개 키 인증서를 서버 트러스트 스토어 (server-truststore.jks)로 가져 와서 클라이언트 진위 여부를 확인했습니다. 서버 측 키 저장소 (server.jks)에서 공개 인증서를 내 보낸 다음 클라이언트 쪽에서 SSL 핸드 셰이크 중 서버 키 인증서를 인증하는 데 사용했습니다.성공적인 SSL 통신을위한 요구 사항

서버 측 (자바) :

  1. 서버의 신뢰

Cleint 사이드 (C++)로 클라이언트의 공개 키 인증서를 내보낼 본인은 SSL 통신을 위해 무슨 짓을했는지 다운 목록 경우 :

  1. 는 서버의 키 스토어에서 내 보낸 서버의 공용 인증서를로드
  2. 클라이언트의 공개 키와 개인 키를 별도로로드했습니다 (클라이언트가 C++로 작성 되었기 때문에 Java 키 저장소를 직접 사용할 수 없기 때문에)

사용되는 모든 인증서는 자체 서명되어 있습니다.

지금까지 내가 실패되었습니다 지속적으로 다음과 같은 오류가 발생했습니다 :

SSL_connect: certificate verify failed 

나는 한 두 가지 질문 :

  1. 내가 SSL 통신에 사용되는 방법이 맞습니까? 그렇지 않다면 올바른 것이 무엇입니까?
  2. 이 오류가 발생했을 수있는 이유는 무엇입니까?

감사합니다.

+0

SSL을 사용하여 C++ 측에서 사용하는 라이브러리/API는 무엇입니까? – gureedo

+0

또한 인증서가 자체 서명되었으므로 인증서 확인에 실패했습니다. 유효성에 대해 걱정하지 않으면 확인을 사용 중지하십시오. – gureedo

+0

@ 구레에도 : 답변 주셔서 감사합니다. 임시 해결 방법으로 확인을 사용 중지했습니다. – Izza

답변

0

직접 호출하는 키를 확인할 수 있는지 확인하십시오 : openssl s_client -connect serverIP : Port. 코드 문제가있을 수 있으며 이에 대한 자세한 내용이 필요합니다. 그렇지 않은 경우 인증서를 사용하고 있지 않습니다. 서버가 인증서를 보내는 중이거나 인증서에 문제가 있습니다.