SSL 핸드셰이크 중에 클라이언트 인증이 어떻게 작동하는지 이해하려고 합니다.
서버 신뢰 저장소에 클라이언트 리프 인증서가 필요합니까? 양방향 SSL 핸드셰이크 중에 언제든지 언급됩니까? 존재하는 경우 무시됩니까?
Server Hello 메시지에는 Certificate_list 메시지가 있습니다. 여기에는 클라이언트 인증서에 서명한 CA 또는 상호 CA 목록이 포함됩니다. 클라이언트는 이 목록을 확인하고 목록에 있는 CA 또는 Inter CA에서 서명한 클라이언트 인증서만 보냅니다. 이 이해가 맞나요?
클라이언트가 클라이언트 인증서를 서버에 보내면 서버는 알려진 CA(CA가 Server hello의 인증서 목록에 있음)에 의해 서명되었는지 확인하고, 그렇다면 서버는 인증서 세부 정보(cn)를 확인합니다. 인증서는 합법적입니다. 그러나 이 시점에서 서버는 클라이언트가 클라이언트 인증서에 대한 개인 키를 소유하고 있는지 여부를 확신할 수 없으므로(클라이언트가 불법적인 방법으로 클라이언트 인증서를 얻었을 수도 있음) 서버는 클라이언트로부터 Certificate_verify 메시지를 기대합니다. 메시지는 클라이언트의 개인 키로 서명되며, 서버는 클라이언트의 공개 키(서버가 클라이언트 인증서를 통해 이전 메시지에서 받은 키)를 사용하여 메시지를 해독할 수 있으므로 이제 서버는 클라이언트가 누구인지 확인할 수 있습니다. 이라고 주장합니다. 이 이해가 맞나요?
Certificate_verify 메시지의 내용은 무엇입니까?
이 경우 서버는 클라이언트를 어떻게 구별합니까? 서버가 클라이언트 CN을 확인하고 이에 따라 클라이언트를 수락하거나 거부합니까? 이 서버가 없으면 모든 클라이언트가 인증서에 대한 적법한 권한이 있는 경우 인증서를 수락합니까?