C# 在客户端上设置证书时,HttpRequestMessage.GetClientCertificate为null

C# 在客户端上设置证书时,HttpRequestMessage.GetClientCertificate为null,c#,asp.net-web-api,iis-express,client-certificates,C#,Asp.net Web Api,Iis Express,Client Certificates,我已经设置了一个WebAPI服务,要求https和open接受客户端证书。SSL部分工作正常。我正在使用WebRequestHandler将证书(真实证书,而不是测试证书)附加到请求,但当我在WebAPI控制器中访问request.GetClientCertificate时,证书为空 ssl证书使用“netsh http add sslcert”和clientcertnegotiation=enable参数绑定到端口 我正在使用IISExpress,通过添加)修改了applicationhost

我已经设置了一个WebAPI服务,要求https和open接受客户端证书。SSL部分工作正常。我正在使用WebRequestHandler将证书(真实证书,而不是测试证书)附加到请求,但当我在WebAPI控制器中访问request.GetClientCertificate时,证书为空

ssl证书使用“netsh http add sslcert”和clientcertnegotiation=enable参数绑定到端口


我正在使用IISExpress,通过添加
)修改了applicationhost.config,这可能是我的问题。

要要求证书,除了SslNegotiateCert之外,还需要设置SslRequireCert。通常不需要映射


客户端证书的要求是,该证书的颁发者必须是“受信任CA”列表中的受信任颁发者(从服务的角度来看),并且颁发者证书必须包括“客户端身份验证”的预期目的。

如果我添加SslRequireCert,我的请求甚至不会发送到服务器。我的证书不行了。而且它确实具有客户端身份验证的目的。那么,您在用户存储中没有被服务器视为可信的证书。你确定CA证书在正确的商店里吗?我写的一篇老文章:这可能是一个线索。正如我所说,调试服务器时会出现一个对话框,但我的证书不在对话框中。我要发送的证书具有客户端身份验证用法,但它的根CA没有。然而,我也根据这些说明()创建了一个测试证书,但仍然失败。仅供参考-我不希望在Active Directory中进行此工作。这是智能卡上的证书。