Obligando al cliente ASP.NET WebAPI a enviar un certificado de cliente incluso cuando ninguna CA coincide

Tengo una aplicación específica que requiere el uso de certificados de cliente para la autenticación mutua de solicitudes HTTPS. El servidor tiene una política flexible de validación de certificados que le permite aceptar certificados de clientes autofirmados que no están presentes en el almacén de certificados del servidor. Se sabe que esto funciona bien usando curl como cliente.

Lo que he determinado a través de las pruebas y la detección de paquetes es que ASP.NET de MicrosoftHttpClient Intenta ser demasiado inteligente durante el protocolo de enlace SSL. Este cliente en particular solo utilizará un certificado de cliente (de laWebRequestHandler.ClientCertificates colección) si tiene cadena de confianza a una de las raíces de confianza del servidor. Lo que he observado es que si no hay certificados con cadena de confianza, el cliente simplemente no enviará ningún certificado durante el protocolo de enlace.

Este es un comportamiento predeterminado comprensible, pero es demasiado restrictivo y no parece haber forma de desactivarlo. He experimentado con varios otrosWebRequestHandler propiedades, incluyendoAuthenticationLevel yClientCertificateOptions pero fue en vano.

¿Hay una manera de forzarHttpClient enviar un certificado de cliente cuando esté disponible en elClientCertificates colección, a pesar de que parece que no se validará en el lado del servidor? Estoy abierto a soluciones tanto directas como sucias (hacks de reflexión) ya que realmente necesito que este cliente trabaje.

Respuestas a la pregunta(1)

Su respuesta a la pregunta