다음을 통해 공유


ClientCertificate 속성은 HttpSys에 대한 재협상을 더 이상 트리거하지 않습니다.

HttpContext.Connection.ClientCertificate 속성은 HttpSys에 대한 TLS 재협상을 더 이상 트리거하지 않습니다.

도입된 버전

ASP.NET Core 6.0

이전 동작

HttpSysOptions.ClientCertificateMethod = ClientCertificateMethod.AllowRenegotiation을 설정하면 HttpContext.Connection.ClientCertificateHttpContext.Connection.GetClientCertificateAsync 모두에 의해 재협상이 트리거될 수 있었습니다.

새 동작

HttpSysOptions.ClientCertificateMethod = ClientCertificateMethod.AllowRenegotiation을 설정하면 HttpContext.Connection.GetClientCertificateAsync에 의해서만 재협상이 트리거될 수 있습니다. HttpContext.Connection.ClientCertificate는 사용 가능한 경우 현재 인증서를 반환하지만 인증서를 요청하기 위해 클라이언트와 재협상하지 않습니다.

변경 이유

Kestrel에 대해 동일한 기능을 구현할 때 재협상을 트리거하기 전에 애플리케이션이 클라이언트 인증서의 상태를 확인할 수 있어야 한다는 것이 분명해졌습니다. 재협상과 충돌하는 요청 본문과 같은 문제의 경우 상태를 확인하면 다음 사용 패턴이 문제를 처리할 수 있습니다.

if (connection.ClientCertificate == null)
{
  await BufferRequestBodyAsync();
  await connection.GetClientCertificateAsync();
}

지연된 클라이언트 인증서 협상을 사용하는 앱은 GetClientCertificateAsync(CancellationToken)를 호출하여 재협상을 트리거해야 합니다.

영향을 받는 API

참고 항목