Jus*_*elf 5 c# authentication dotnet-httpclient mutual-authentication
为什么我的 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();
Run Code Online (Sandbox Code Playgroud)
X509Certificate2 类看起来没有从 PEM 证书中读取私钥。
var clientCert = new X509Certificate2("badssl.com-client.pem", "badssl.com");
if(!clientCert.HasPrivateKey)
throw new ApplicationException("Cert doesn't contain private key");
Run Code Online (Sandbox Code Playgroud)
是否抛出错误。
就 badssl.com 而言,他们确实有可用的 PKCS #12 证书(又名 PFX)。我能够让你的代码与该证书一起使用。