如何正确导入此证书?

How do I import this Cert Properly?

我 运行 在使用 c# x509Certs 库导入证书时遇到一个奇怪的问题,cert/key 和 CA 证书似乎正确导入(如果我打开 MMC 并管理单元中的本地计算机证书商店我在他们各自的商店中看到它们受信任的根证书和个人)。

Trust 根证书似乎工作正常。这就是我如何知道个人证书未正确导入的方式。这些证书来自 VPN 提供商,当我手动导入它们时一切正常。当我使用我的小工具时,我得到一个 "IKE can't find valid machine certificate." 这是我导入它的方式:

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,我会看到个人 cert/key,但我会看到 "can't find machine certificate error",如果我重新导入个人证书,一切正常。所以我再次认为个人证书是这里的问题。有什么想法吗?


澄清一下,当我使用 MMC 导入 Cer.p12 和 CACert.cer 时一切正常。

使用我的工具时,Cer.p12 存在导入问题。重新导入这个似乎可以解决问题。

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

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

与之前的代码相比,我唯一改变的是 .PersistKeySet > .MachineKeySet