Tengo un HttpClient
que usa un certificado SSL autofirmado que se guarda en la computadora del cliente como un archivo .cer
. Para validar el certificado, uso ServicePointManager.ServerCertificateValidationCallback de la siguiente manera (no es mi código real, solo la esencia):
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, errors) => { if (errors == SslPolicyErrors.None) return true; if (cert.Subject == "CN=CertificateCommonName") return CertificatesMatch(cert, GetSavedCertificateFromFile()); else return false; };
Sin embargo, noté que esta función solo se llama una vez para cualquier certificado por proceso (más exactamente por AppDomain, probablemente), lo que significa que una vez que se ha validado un certificado, se almacena en algún lugar en un "caché de certificados válidos". ¿Hay alguna manera de que pueda simplemente agregar mi certificado guardado a ese caché?
Ojalá pudiera simplemente usar un HttpClientHandler
con mi HttpClient
y agregar el certificado a la propiedad ClientCertificates
, sin embargo, estoy apuntando a .NET Framework 4.5, y esa función solo está disponible desde .NET Framework 4.7.1, por lo que no es una opción.