Как правильно импортировать этот сертификат?

Я сталкиваюсь со странной проблемой при импорте сертификатов с использованием библиотеки C# x509Certs, сертификат / ключ и сертификат CA, по-видимому, импортируются правильно (если я открываю MMC и привязываю хранилище сертификатов локального компьютера, я вижу их в соответствующих хранилищах Trusted Корневые сертификаты и личные).

Корневой сертификат доверия работает нормально. Вот как я знаю, что личный сертификат не импортируется должным образом. Сертификаты принадлежат 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, я вижу личный сертификат / ключ, но я получаю, что "не могу найти ошибку сертификата компьютера", и если я снова импортирую личный сертификат, все работает нормально. Итак, еще раз, я думаю, что личный сертификат является проблемой здесь. Есть идеи?


Просто чтобы уточнить, когда я импортирую Cer.p12 и CACert.cer с помощью MMC, все работает нормально.

При использовании моего инструмента Cer.p12 имеет проблемы с импортом. Повторное импортирование этого, кажется, решает проблему.

1 ответ

Решение

Yacoub Massad по моему вопросу был немного неясным, но мне все же удалось его использовать, я понял свою проблему после прочтения его VB-кода.

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

Единственное, что я изменил между моим предыдущим кодом и этим .PersistKeySet > .MachineKeySet

Другие вопросы по тегам