Compartir a través de


La propiedad ClientCertificate ya no desencadena la renegociación de HttpSys

La propiedad HttpContext.Connection.ClientCertificate ya no desencadena renegociaciones TLS de HttpSys.

Versión introducida

ASP.NET Core 6.0

Comportamiento anterior

El establecimiento de HttpSysOptions.ClientCertificateMethod = ClientCertificateMethod.AllowRenegotiation permitía que HttpContext.Connection.ClientCertificate y HttpContext.Connection.GetClientCertificateAsync desencadenaran la renegociación.

Comportamiento nuevo

El establecimiento de HttpSysOptions.ClientCertificateMethod = ClientCertificateMethod.AllowRenegotiation permite que la renegociación solo la desencadene HttpContext.Connection.GetClientCertificateAsync. HttpContext.Connection.ClientCertificate devuelve el certificado actual, si está disponible, pero no renegocia con el cliente para solicitarlo.

Motivo del cambio

Al implementar las mismas características para Kestrel, quedó claro que las aplicaciones tienen que poder comprobar el estado del certificado de cliente para desencadenar una renegociación. En caso de problemas, como el cuerpo de la solicitud en conflicto con la renegociación, la comprobación del estado permite que el siguiente patrón de uso se ocupe del problema:

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

Las aplicaciones que usan la negociación retrasada de certificados de cliente deben llamar a GetClientCertificateAsync(CancellationToken) para desencadenar la renegociación.

API afectadas

Vea también