【发布时间】:2013-01-21 11:05:27
【问题描述】:
我想创建一个 X509 证书用于测试目的。此证书必须由 3 个开发人员在其本地计算机上共享(即所有人共享相同的证书,以便我们可以使用相同的指纹)。
因此,此证书中的私钥必须是可导出的。
我使用以下命令创建证书:
makecert -r -pe -n "CN=mytestsite.local" -b 01/01/2000 -e 01/01/2036 -ss my -sr localMachine -sky exchange localhost.cer
此证书工作正常,但问题是调用 Certificates.Find 时 isValid 参数必须为 false...
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
var cert = store.Certificates.Find(
X509FindType.FindByThumbprint,
Config.PdfCertificateThumbprint,
false //********************* This has to be false.
).OfType<X509Certificate>().FirstOrDefault();
只要我将该 IsValid 属性设置为 True,Find 方法就不再返回我的证书。为什么 makecert 会生成“无效”证书?或者如何找出证书被视为无效的原因?
【问题讨论】:
-
因为它不受信任(即证书链没有以安装在证书存储中的证书结尾)?
标签: c# x509certificate x509certificate2 makecert