C# 如何正确导入此证书?

C# 如何正确导入此证书?,c#,x509certificate,vpn,x509certificate2,C#,X509certificate,Vpn,X509certificate2,我在使用c#x509Certs库导入证书时遇到了一个奇怪的问题,证书/密钥和CA证书似乎导入正确(如果我打开MMC并管理本地计算机证书存储,我会在它们各自的存储中看到它们受信任的根证书和个人证书) 信任根证书似乎工作正常。以下是我如何知道个人证书未正确导入的。证书来自VPN提供商,当我手动导入它们时,一切正常。当我使用我的小工具时,我得到一个“IKE找不到有效的机器证书”。下面是我导入它的方式: X509Certificate2 certificate = new X509Certificate

我在使用c#x509Certs库导入证书时遇到了一个奇怪的问题,证书/密钥和CA证书似乎导入正确(如果我打开MMC并管理本地计算机证书存储,我会在它们各自的存储中看到它们受信任的根证书和个人证书)

信任根证书似乎工作正常。以下是我如何知道个人证书未正确导入的。证书来自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,我会看到个人证书/密钥,但我得到“找不到机器证书错误”,如果我重新导入个人证书,一切正常。因此,我再次认为个人证书是这里的问题。有什么想法吗


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

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

对我的问题的评论有点模糊,但我确实设法使用了它,我在阅读了他的VB代码后意识到了我的问题

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

我在以前的代码和这段代码之间唯一更改的是
。PersistKeySet
.MachineKeySet

请看一看:。我怀疑正确的标志是
MachineKeySet
,而不是
UserKeySet