2017-12-05 5 views
0

서버가 SSL 인증서를 기반으로 클라이언트 유효성 검사를 수행하는 웹 서버 인 클라이언트 - 서버 응용 프로그램에서 작업하고 있습니다. 서버가 루트 CA 인증서를 신뢰합니다. 클라이언트는 루트 CA가 서명 한 중간 CA가 서명 한 인증서가있는 C++로 개발 된 Windows 응용 프로그램입니다. WinHttpSetOption api를 WINHTTP_OPTION_CLIENT_CERT_CONTEXT 옵션으로 호출하여 https 연결 중에 클라이언트 인증서를 설정할 수 있습니다. 그러나 이것은 클라이언트 인증서 만 설정하고 전체 체인은 설정하지 않습니다. 서버에는 저장소에 중간 CA가 없으므로 클라이언트를 인증 할 수 없습니다.WinHttp에서 클라이언트 인증서 체인을 설정하는 방법

전체 체인이 이미 클라이언트의 인증서 저장소에있는 경우 WinHttp에서 전체 클라이언트 인증서 체인을 설정하는 방법이 있습니까?

답변

0

서버에 미리 CA 인증서가 있어야하며 클라이언트가 제공하는 루트 CA를 신뢰하지 않습니다. (나는 (서버 측)이 신뢰할 수있는 CA에 의해 서명 된 중간 CA를 신뢰할지 확신하지는 않지만 내 성향은 아니오라고 말함).

클라이언트가 보내는 임의의 임의의 CA를 신뢰하면 인증서 확인의 전체 지점이 손상 될 수 있으므로 클라이언트가 제출하는 데이터가 실제로 의미가 있는지 여부는 알 수 없습니다. 따라서 서버의 인증서 저장소에 루트 CA 인증서와 중간 CA 인증서를 추가하십시오. (액세스 권한이없는 경우 관리자에게 이야기하고 권한을 부여해야합니다.)

+0

서버에는 신뢰할 수있는 루트 CA (예 : 'A')가 있습니다. 클라이언트에 인증서가 있습니다 ('C'). 이것은 cert A (A -> B -> C, 여기서 cert B는 서버에없는 중간 인증서 임)에서 파생됩니다. –

0

내가 찾을 수있는 것은 시스템 저장소에 하위 CA를 추가하는 것입니다. 서비스를 시작하거나 설치하는 동안 CA 인증서 저장소를 열고 인증서 컨텍스트를 추가합니다.

관련 문제