2017-03-02 1 views
1

OpenSSL을 사용하여 클라이언트 인증서의 유효성을 검사해야합니다. 그러나 루트 인증서 (신뢰할 수있는 중간 인증서 만)가 없습니다.SSL_CTX_set_verify 콜백은 인증서를 어디에서 받습니까?

  • how to validate a client Certificate using the trusted internediate CA certificate? 거의 "콜백을 설정 요약은 (사용 :

    나는 몇 가지 링크가 그 작업을 수행하는 방법에 주위를 둘러 보면 시작 발견 SSL_CTX_set_verify)이 콜백의 오류를 무시하십시오. "

    콜백이 호출됩니다

    여러 번 및 설명서 (체인의 각 인증서) 말한다 :

    인증서 체인이 깊은 중첩 수준 (루트 CA 인증서)로 시작하는 확인하고 위쪽으로 일한다 피어의 인증서에. 각 레벨에서 서명 및 발급자 속성이 확인됩니다.

    내 질문에 OpenSSL에서 이러한 인증서 체인을 어디에서 얻을 수 있습니까? 클라이언트에서 가져 오거나 (신뢰할 수 없다는 의미) 신뢰할 수있는 저장소에서 가져옵니다 (신뢰할 수 있음을 의미).

    클라이언트 인증서가 클라이언트에서만 제공되는 경우 깊이> 0 (중간 인증서) 인 모든 오류를 거의 무시할 수 있습니다. 이 경우 클라이언트가 전체 체인을 보낼 수 있으면 오류 만 무시할 수는 없지만 추가 검증을 수행해야합니다.

    P. 내 실험에 따르면 depth = 1은 중간의 신뢰할 수있는 인증서이고 depth = 0은 클라이언트에서 보내는 인증서입니다. 그러나 이것은 결론적이지 않습니다.

  • 답변

    2

    전체 체인은 클라이언트에서 제공되며 클라이언트의 최상위 요소는 CertificateRequest 메시지에서 신뢰한다고 말한 CA의 요소이어야합니다. 그렇지 않으면 클라이언트는 아무것도 보내지 않아야합니다 (아마도 빈 체인).

    신뢰할 수있는 인증서는 루트입니다. 따라서 신뢰할 수있는 인증서 집합에 최상위 인증서가 있는지 확인한 다음 체인의 정상적인 유효성 검사를 진행하면됩니다.

    관련 문제