我在使用c#x509Certs库导入证书时遇到了一个奇怪的问题,证书/密钥和CA证书似乎正确导入(如果我打开MMC并管理本地计算机证书存储区,我看到它们在他们各自的商店受信任的根证书和个人)。
Trust根证书似乎工作正常。以下是我如何知道个人证书未正确导入的方式。证书来自VPN提供商,当我手动导入它们时,一切正常。当我使用我的小工具时,我得到一个" IKE无法找到有效的机器证书。"以下是我导入它的方式:
X509Certificate2 certificate = new X509Certificate2();
byte[] rawCertificateData = File.ReadAllBytes(@"Cert.p12");
certificate.Import(rawCertificateData, "password", X509KeyStorageFlags.PersistKeySet);
X509Store store = new X509Store(StoreName.Root,
StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
store.Add(CACert);
store.Close();
X509Store store1 = new X509Store(StoreName.My,
StoreLocation.LocalMachine);
store1.Open(OpenFlags.ReadWrite);
store1.Add(certificate);
store1.Close();
现在使用我的工具后,如果我到了mcc,我会看到个人证书/密钥,但我得到了#34;无法找到机器证书错误"如果我重新进口个人证书,一切正常。所以我认为个人证书是这里的问题。有什么想法吗?
只是澄清一下,当我使用MMC导入Cer.p12和CACert.cer时,一切正常。
使用我的工具时,Cer.p12存在导入问题。重新导入这似乎解决了这个问题。
答案 0 :(得分:0)
yacoub-massad's对我的问题的评论有点模糊,但我确实想要使用它,我在阅读他的VB代码后意识到了我的问题。
X509Certificate2 certificate = new X509Certificate2();
byte[] rawCertificateData = File.ReadAllBytes(@"Cert.p12");
certificate.Import(rawCertificateData, "password", X509KeyStorageFlags.MachineKeySet);
我之前的代码与此之间唯一的变化是.PersistKeySet
> .MachineKeySet