我有以下设置:
现在,我可以使用Fiddler通过提供所需的客户端证书来调用web api。但是,当我尝试通过.net代码(无论是RestSharp还是WebRequest)执行相同操作时,客户端证书不存在于服务器端的RequestContext对象中。这导致未经授权的响应。我认为问题不在于客户端代码,证书是否正确加载并分配给http客户端或请求。 Fiddler显示到服务器的加密隧道。但是,客户端证书似乎不存在于服务器端。
我完全失去了我可能导致此行为的错过。任何帮助都将深表感谢。
答案 0 :(得分:0)
将证书安装到“本地计算机/受信任人”#。
中答案 1 :(得分:0)
服务器在询问之前需要已经信任证书。它发送的CertificateRequest
消息列出了可以签署客户端证书的可接受的CA.如果客户端证书的签名者不在该消息中,则无法发送它。
如何在您的环境中实现这一目标留给读者练习。一般来说,现在可以免费获得SSL证书,没有理由沉迷于自签名证书的时间成本和管理上的不便。恕我直言,即使您支付CA签名也没有。
答案 2 :(得分:0)
当服务通过HTTPS调用另一个服务并且无法建立安全连接时,我遇到了问题。我的问题是,由于服务作为NETWORK SERVICE运行,它无法找到证书,因为它正在查看localmachine /我的证书库。
当我从我的网络浏览器运行时它工作正常,因为那时,我的浏览器在currectuser / my certificate store中找到了证书。
将证书添加到计算机/我的商店,看看它是否有帮助。