问题
为什么我的HttpClient实例不会使用我提供的客户端证书进行相互认证?
背景
我正在使用HttpClient进行相互TLS。作为客户端,我将客户端证书添加到WebRequestHandler中,然后在新的HttpClient中使用该处理程序。
该证书未安装在我的计算机上。我已经成功地将其加载到处理程序中,并且在调试时可以看到它(密码也正确)。
我正在测试几个不同的测试域名:
- https://client.badssl.com/ - 这会查找使用此处找到的证书进行客户端认证。这是我目前正在使用的证书。
- https://prod.idrix.eu/secure/ - 这只是简单地返回呈现的任何客户端证书。
两个测试应用程序都没有显示发送了证书。
代码
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();