ClientCertificate 속성은 HttpSys에 대한 재협상을 더 이상 트리거하지 않습니다.
HttpContext.Connection.ClientCertificate
속성은 HttpSys에 대한 TLS 재협상을 더 이상 트리거하지 않습니다.
도입된 버전
ASP.NET Core 6.0
이전 동작
HttpSysOptions.ClientCertificateMethod = ClientCertificateMethod.AllowRenegotiation
을 설정하면 HttpContext.Connection.ClientCertificate
및 HttpContext.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
- Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.ClientCertificateMethod
- Microsoft.AspNetCore.Http.ConnectionInfo.ClientCertificate
- Microsoft.AspNetCore.Http.ConnectionInfo.GetClientCertificateAsync(CancellationToken)
참고 항목
.NET