自签名客户端证书无法到达服务器应用程序

时间:2017-03-14 12:54:12

标签: ssl asp.net-web-api2 owin azure-service-fabric self-signed

我有以下设置:

  • 用于开发目的的自签名证书
  • OWIN托管的Web API,作为ASF服务部署在本地Azure Service Fabric Cluster上。 Web API使用了与相关开发证书协助的HTTPS。
  • 一个调用Web API的简单.net客户端应用程序。在该应用程序中,设置了ServicePointManager.ServerCertificateValidationCallback方法,因此它始终返回true(因为CA不受信任)
  • 客户端应用程序和Web API都位于同一本地开发计算机上。证书安装在“机器商店”
  • 上的同一台机器上

现在,我可以使用Fiddler通过提供所需的客户端证书来调用web api。但是,当我尝试通过.net代码(无论是RestSharp还是WebRequest)执行相同操作时,客户端证书不存在于服务器端的RequestContext对象中。这导致未经授权的响应。我认为问题不在于客户端代码,证书是否正确加载并分配给http客户端或请求。 Fiddler显示到服务器的加密隧道。但是,客户端证书似乎不存在于服务器端。

我完全失去了我可能导致此行为的错过。任何帮助都将深表感谢。

3 个答案:

答案 0 :(得分:0)

将证书安装到“本地计算机/受信任人”#。

答案 1 :(得分:0)

服务器在询问之前需要已经信任证书。它发送的CertificateRequest消息列出了可以签署客户端证书的可接受的CA.如果客户端证书的签名者不在该消息中,则无法发送它。

如何在您的环境中实现这一目标留给读者练习。一般来说,现在可以免费获得SSL证书,没有理由沉迷于自签名证书的时间成本和管理上的不便。恕我直言,即使您支付CA签名也没有。

答案 2 :(得分:0)

当服务通过HTTPS调用另一个服务并且无法建立安全连接时,我遇到了问题。我的问题是,由于服务作为NETWORK SERVICE运行,它无法找到证书,因为它正在查看localmachine /我的证书库。

当我从我的网络浏览器运行时它工作正常,因为那时,我的浏览器在currectuser / my certificate store中找到了证书。

将证书添加到计算机/我的商店,看看它是否有帮助。