我在使用store.Certificates.Find时遇到了问题。我使用WindowsServer2008Net3.5的R2。证书由以下人员安装:
public static void AddCertificate(X509Certificate2 cert, StoreName name = StoreName.My, StoreLocation location = StoreLocation.LocalMachine)
{
var store = new X509Store(name, location);
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();
}然后,通过以下方法查找证书
string certThumbprint = "XXXX";
var certificates = store.Certificates.Find(X509FindType.FindByThumbprint, commandLineArgs.CertificateThumbprint, true);
if (certificates.Count == 0)
{
throw new ArgumentException("No certificate found with given thumbprint.");
}不应抛出异常,但有时似乎会抛出异常。它每100次抛出5次异常。
我搜索并发现了“无形的第一个字符”问题,但在我的例子中,拇指指纹确实是硬编码的。我不会从任何地方看到指纹。使用NET.4.5运行在windows server 2012上的确切代码从来没有给我带来任何问题。这只适用于具有NET.3.5的windows服务器。我想知道为什么只在WS2008R2上的结果是不一致的?
发布于 2015-06-16 07:50:01
我认为问题可能在于您的用户对证书没有权限。
尝尝这个
发布于 2015-06-16 10:58:50
请验证证书确实位于插入证书的LocalMachine\My存储区。我假设您会在商店中找到证书,但是当您双击它时,您会看到,这是不可信的。我的假设是证书链没有构建到受信任的根CA。
现在,修改代码以搜索证书(我已经将最后一个参数更改为false)
var certificates = store.Certificates.Find(X509FindType.FindByThumbprint, commandLineArgs.CertificateThumbprint, false);或者(IMHO更好地)通过将CA证书导入到适当的存储区(根、中间当局)来使导入的证书可信。
https://stackoverflow.com/questions/30858815
复制相似问题