Как правильно импортировать этот сертификат?
Я сталкиваюсь со странной проблемой при импорте сертификатов с использованием библиотеки 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