Мне кажется, что у меня есть базовые знания о сертификате X509, и я создал сертификаты и закрытые ключи для своей среды разработки.Познакомимся теперь с классом X509Certificate и другими соответствующими разрешениями.
Итак, в процессе я решил проверить сертификат после его установки в моей системе.Затем, используя следующий код, я попытался проверить процесс проверки подлинности при сертификации:
const string x509Cert = @"\PathToMyCertificate\LMC.cer";
var cert = new X509Certificate(x509Cert);
var pmc = new PublisherMembershipCondition(cert);
if(pmc.Check(Assembly.GetCallingAssembly().Evidence))
{
Console.WriteLine("Assembly belongs to publisher");
}
Конечно, как и ожидалось, внутренний блок кода не выполняется.Тогда я решил просто подписать свою сборку, используя ключ сертификата, но «просто» оказалось не так просто, как я ожидал.
Я использовал следующий код, чтобы присвоить сертификат моим приложениям.:
var publisher = new Publisher(X509Certificate.CreateFromCertFile(x509Cert));
var evidence = Assembly.GetCallingAssembly().Evidence;
evidence.AddHost(publisher);
// Create an identity permission based on publisher evidence.
var x509Permission = (PublisherIdentityPermission)publisher.CreateIdentityPermission(evidence);
x509Permission.Demand();
Но это тоже не сработало.Затем я проверил свойства своего проекта, чтобы увидеть, есть ли способ подписать его там с помощью ключа X509Certificate, но ничего.Единственный вариант, который я вижу, - это подписать с помощью манифестов Click Once;но опция «Выбрать из файла» ищет расширение .pfx.Поэтому я думаю, что, возможно, этот метод работает только для поддержки сертификатов, сгенерированных Click-Once?
Per BOL: «Если у вас есть файл ключа или сертификат в другом формате, сохраните его в хранилище сертификатов Windows и выберите сертификатописано в предыдущей процедуре. "Я установил свой сертификат X509 в хранилище доверенных корневых центров сертификации.Разве это не хранилище сертификатов Windows?Потому что в окне хранилища сертификатов ничего не отображается.
Поиск в онлайн-ресурсах также мало что даст, если я не использую неправильную комбинацию ключевых слов.Теперь я мог бы создать еще один сертификат X509 и ключ, гарантирующий, что расширение ключа будет .pfx, но я хотел убедиться, что я нахожусь на правильном пути решения, прежде чем вращать мои колеса даром, и я не верю, что это будет ответом.
Итак, можно ли подписать сборку .NET с помощью сертификата X509?Если да, какая документация доступна для помощи в выполнении этой задачи?