Forçando o cliente WebAPI do ASP.NET a enviar um certificado de cliente mesmo quando nenhuma correspondência de CA

Eu tenho um aplicativo específico que requer o uso de certificados de cliente para autenticação mútua de solicitações HTTPS. O servidor tem uma política de validação de certificado flexível que permite aceitar certificados de cliente autoassinados que não estão presentes no armazenamento de certificados do servidor. Sabe-se que isso funciona muito bem usando o curl como um cliente.

O que eu determinei através de testes e sniffing de pacotes é que o ASP.NET da MicrosoftHttpClient tenta ser excessivamente inteligente durante o handshake SSL. Este cliente em particular usará somente um certificado de cliente (doWebRequestHandler.ClientCertificates coleção) se tiver uma cadeia de confiança para uma das raízes confiáveis ​​do servidor. O que observei é que, se não houver certificados com cadeia de confiança, o cliente simplesmente não enviará um certificado durante o aperto de mão.

Esse comportamento padrão é compreensível, mas é excessivamente restritivo e parece não haver nenhuma maneira de desativá-lo. Eu experimentei vários outrosWebRequestHandler propriedades, incluindoAuthenticationLevel eClientCertificateOptions mas sem sucesso.

Existe uma maneira de forçarHttpClient para enviar um certificado de cliente quando estiver disponível noClientCertificates coleção, mesmo que pareça que não será validado no lado do servidor? Estou aberto a soluções diretas e sujas (reflexos hacks), pois realmente preciso que esse cliente funcione.

questionAnswers(1)

yourAnswerToTheQuestion