我正在尝试在IIS 8中运行的ASP.NET MVC3应用程序中设置客户端证书身份validation。客户端(Good Third Party)使用自签名SSL证书对自己进行身份validation,并且我的应用程序事先知道指纹并检查请求具有适当的证书。
它不起作用 – IIS拒绝HTTP 403.16(客户端证书不可信)的请求。
我做了很多实验,看起来好像将客户端证书添加到“根”(受信任的根证书颁发机构)或“身份validation根”(第三方根证书颁发机构)证书存储区,然后将请求传递到应用程序代码 – IIS现在信任证书并接受请求。 因此,将证书添加到其中一个商店“使其工作”。
问题是我不确定这样的变化可能有什么其他影响。 假设好的第三方丢失了证书的私钥部分,一些坏的第三方滥用了它 – 除了冒充好的第三方,他们能做什么呢? 也许他们可以签署我的系统将信任的代码包? 也许他们可以颁发站点证书,并让我的系统信任他们的恶意网站?
我在哪个商店添加客户端证书,以便将意外的安全风险降至最低?
没有安全风险,你无法解决你的问题。 唯一的select是在Local Machine\Trusted Root CAs存储中安装证书。 因此,所有使用Windows Cert Store的应用程序都将信任该第三方证书。 如果它是CA证书,那么在根目录下的所有子证书将在您的系统上被信任。
如果您运行自己的PKI,则可以通过执行该证书的合格的从属性来提高安全性。 有了合格的从属关系,您将能够设置各种types的约束条件,在该约束条件下证书是可信的或不可信的。