Asp.net 在服务器上找不到客户端X509证书

Asp.net 在服务器上找不到客户端X509证书,asp.net,Asp.net,在本地主机上,下面的代码运行正常,但在服务器上它无法找到客户端证书 X509Store store = new X509Store(StoreName.My,StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); X509Certificate2Collection certificates = (X50

在本地主机上,下面的代码运行正常,但在服务器上它无法找到客户端证书

            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;
            }
        }

我打赌您没有将证书放在应用程序池的标识存储中,而是放在另一个用户自己的存储中


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

您不能使用服务器端代码枚举客户端(使用浏览器的用户)的证书。它与localhost一起工作的原因是,客户机和服务器恰好是同一台计算机,因此它似乎可以工作。您正在使用的代码正在服务器上搜索证书存储

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


综上所述,客户端证书可能不会像您期望的那样工作。使用浏览器的人选择要发送的证书,您不能从客户端任意抽取证书。

那么,服务器上是否存在证书?否,客户端是否存在证书客户端是否尝试在客户端获取证书,使用浏览器的人?我有一个网站,需要用户数字签名证书才能访问一些详细信息,我正在查找证书序列号来识别它,但这并不能真正澄清问题。您试图在哪里从服务器或使用浏览器的人员中查找证书?请提供代码,以便我可以尝试或提供使IIS能够接受客户端证书的方法请告诉我如何从他的浏览器获取客户端证书请告诉我如何从他的浏览器获取客户端证书客户端证书?您是指使用您的应用程序的用户?实际上你不能。是的,有什么办法可以得到它吗?你可以从你的web服务器部署clickonce应用程序。此类clickonce应用程序是一个普通的桌面应用程序,在客户端运行时可以访问证书而不受任何限制。请详细解释clickonce应用程序和过程