2014-06-26 35 views
0

在Localhost下面的代码工作正常,但在服务器上无法找到客户端证书。无法在服务器上找到客户端X509Certificate

  X509Store store = new X509Store(StoreName.My,StoreLocation.CurrentUser); 
      store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); 
      X509Certificate2Collection certificates = (X509Certificate2Collection)store.Certificates; 
      store.Close(); 
      foreach (X509Certificate2 certificate in certificates) 
      { 

        string SerialNumber = certificate.SerialNumber; 
      } 
     } 
+0

那么,服务器上是否存在证书? – vcsjones

+0

不,证书存在于客户端 – user3779791

+0

“在客户端”您是否试图在客户端上使用浏览器获取证书? – vcsjones

回答

0

我敢打赌,你没有将证书放在应用程序池的身份库中,而是放在另一个用户(你自己?)的商店中。

请注意,搜索标志CurrentUser确实意味着当前用户,在服务器上当前用户是应用程序池的标识。

+0

请告诉我如何从他的浏览器获取客户端证书 – user3779791

+0

客户端证书?你的意思是使用你的应用程序的用户?你实际上不能。 –

+0

是的,有没有办法获得它 – user3779791

0

无法枚举客户端的证书 - 使用浏览器的人 - 使用服务器端的代码。它与本地主机一起工作的原因是因为客户端和服务器碰巧是同一台计算机,所以它似乎工作。您使用的代码正在搜索服务器上的证书存储区。

可以将IIS配置为要求客户端使用客户端证书发送某些类型的证书,但这具有一定的局限性。一旦将IIS配置为接受客户端证书,您就可以通过查看Web请求的ClientCertificate属性来访问客户端提供的证书。

也就是说,客户端证书不会像您期待的那样工作。使用浏览器的人选择要发送哪个证书,您不能随便从客户端开始任意推送证书。

+0

请提供代码,以便我可以尝试或使IIS能够接受客户端证书的方式 – user3779791

+0

请告诉我如何从他的浏览器获取客户端证书 – user3779791

相关问题