为什么我的HttpClient实例不使用我提供的客户端证书进行相互身份验证?
我正在使用HttpClient进行双向TLS。作为客户端,我将客户端证书添加到WebRequestHandler中,然后在新的HttpClient中使用该处理程序。
证书未安装在我的计算机上。我已成功将其加载到处理程序中,并且在调试时可以看到它(密码也正确)。
我正在针对几个不同的测试域进行测试
两个测试应用程序均未显示任何证书正在发送。
var clientCert = new X509Certificate2("badssl.pem", "badssl.com");
var webHandler = new WebRequestHandler();
webHandler.ClientCertificates.Add(clientCert);
var httpClient = new HttpClient(webHandler);
var result = await (await httpClient.GetAsync(uri)).Content.ReadAsStringAsync();
答案 0 :(得分:3)
X509Certificate2类似乎没有从PEM证书中读取私钥。
var clientCert = new X509Certificate2("badssl.com-client.pem", "badssl.com");
if(!clientCert.HasPrivateKey)
throw new ApplicationException("Cert doesn't contain private key");
抛出错误。
对于badssl.com,他们确实有可用的PKCS#12证书(又名PFX)。我能够使您的代码与该证书一起使用。