如何正确导入此证书?

时间:2016-02-04 17:58:47

标签: c# x509certificate vpn x509certificate2

我在使用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存在导入问题。重新导入这似乎解决了这个问题。

1 个答案:

答案 0 :(得分:0)

yacoub-massad's对我的问题的评论有点模糊,但我确实想要使用它,我在阅读他的VB代码后意识到了我的问题。

X509Certificate2 certificate = new X509Certificate2();
byte[] rawCertificateData = File.ReadAllBytes(@"Cert.p12");
certificate.Import(rawCertificateData, "password", X509KeyStorageFlags.MachineKeySet);

我之前的代码与此之间唯一的变化是.PersistKeySet> .MachineKeySet