HttpRequestMessage.在客户端设置证书时,GetClientCertificate为空
本文关键字:GetClientCertificate 为空 证书 客户端 设置 HttpRequestMessage | 更新日期: 2023-09-27 18:11:57
我已经设置了一个WebAPI服务,要求https并打开以接受客户端证书。SSL部分工作正常。我使用WebRequestHandler将证书(真实的证书,而不是测试证书)附加到请求,但是当我访问请求时。在WebAPI控制器的GetClientCertificate中,证书为空。
使用"netsh http add sslcert"和clientcertnegotiation=enable参数将ssl证书绑定到端口。
我正在使用IISExpress,并修改了applicationhost。
在安全节点下配置<access sslFlags="Ssl, SslNegotiateCert" />
,在认证节点下配置<clientCertificateMappingAuthentication enabled="true" />
。
我没有得到任何错误,只有null
我唯一的线索是当我在浏览器中打开WebAPI时,我被提示输入ClientCertificate,而我在代码中添加到WebRequestHandler的那个不在列表中。
用作客户端证书的证书有哪些要求?这个问题(IISExpress ClientCertificate Setup Steps)意味着这可能是我的问题。
要要求证书,除了SslNegotiateCert之外,您还需要设置SslRequireCert。通常不需要映射。
客户端证书的要求是该证书的颁发者必须是受信任的颁发者(从服务的角度来看),即在"受信任的CA"列表中…并且颁发者证书必须包含"客户端身份验证"的预期目的。