Schannel 연결 재협상
암호 그룹 또는 클라이언트 인증과 같은 연결의 특성을 변경하려면 연결의 "다시 실행" 또는 재협상을 요청할 수 있습니다.
변경하려는 특성이 자격 증명에 의해 제어되는 경우 연결을 재협상하기 전에 새 자격 증명을 가져와야 합니다. 자세한 내용은 Schannel 자격 증명 가져오기를 참조하세요.
클라이언트 애플리케이션에서 다시 실행을 요청하려면 InitializeSecurityContext(Schannel) 함수를 호출합니다. 서버 애플리케이션은 AcceptSecurityContext(Schannel) 함수를 호출합니다. 매개 변수를 다음과 같이 설정합니다.
- phContext 매개 변수에서 기존 보안 컨텍스트를 지정합니다.
- (클라이언트만 해당) 컨텍스트를 설정할 때 지정된 것과 동일한 서버 이름( pszTargetName 매개 변수)을 지정합니다.
- 해당하는 경우 phCredential 매개 변수를 사용하여 새 자격 증명을 지정합니다.
- 자격 증명과 관련이 없는 컨텍스트 특성을 변경하려면 fContextReq 매개 변수를 사용하여 이러한 특성을 지정합니다.
적절한 함수를 호출한 후 애플리케이션은 클라이언트에 결과를 보내고 DecryptMessage(Schannel) 함수를 사용하여 들어오는 메시지를 계속 처리해야 합니다.
애플리케이션을 진행할 준비가 되면 DecryptMessage(Schannel) 함수는 SEC_I_RENEGOTIATE 반환합니다. SEC_I_RENEGOTIATE 반환 코드를 받으면 애플리케이션은 AcceptSecurityContext(Schannel) (서버) 또는 InitializeSecurityContext(Schannel)(클라이언트) 를 호출하고 SECBUFFER_TOKEN DecryptMessage에서 반환된 SECBUFFER_EXTRA 콘텐츠를 전달해야 합니다. 이 호출이 값을 반환한 후 애플리케이션이 새 연결을 만드는 것처럼 계속 진행합니다.