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

时间:2013-05-03 17:43:16

标签: c# asp.net-web-api iis-express client-certificates

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

使用带有clientcertnegotiation = enable参数的“netsh http add sslcert”将ssl证书绑定到端口。

我正在使用IISExpress,并通过将<access sslFlags="Ssl, SslNegotiateCert" />添加到安全节点并在身份验证节点下设置<clientCertificateMappingAuthentication enabled="true" />来修改applicationhost.config。

我没有得到任何错误,只是null。

我唯一的线索是当我在浏览器中调出WebAPI时,我被提示输入ClientCertificate,而我在代码中添加到WebRequestHandler的那个不在列表中。

证书用作客户证书的要求是什么?这个问题(IISExpress ClientCertificate Setup Steps)暗示可能是我的问题。

1 个答案:

答案 0 :(得分:0)

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

客户端证书的要求是该证书的颁发者必须是受信任的颁发者(从服务的角度来看),这意味着“受信任的CA”列表......并且颁发者证书必须包含“客户”的预期目的认证”。