2014-11-08 2 views
0

Это академический вопрос, пытающийся понять новый материал. Не академический в смысле формальной школы, а в смысле непрерывного образования и желающий получить контроль над областью развития, которой я раньше не подвергался.Чтение исполнительной сборки подпись pfx/cert

Итак, в моем понимании я создаю сборку и «подписывая ее», я создал сильное имя/X509Certificate.

Поэтому я создаю пустой winapp. Я перехожу к свойствам проекта на вкладке подписания и подписываю сборку с помощью пароля.

Файл test.pfx добавлен в мой проект.

В форме загрузки я затем выполняю этот код, думая, что увижу, что мой сборщик подписывает сертификат только я не так, как это null ... ??

Assembly ass = Assembly.GetExecutingAssembly(); 
Module mod = ass.GetModules().First(); 
X509Certificate cert = mod.GetSignerCertificate(); 

сертификат - null. Почему это? Я делаю что-то неправильно, чтобы получить сертификат, или у меня что-то смешалось в голове, и то, что я ищу, не там, где я смотрю?

Спасибо


Редактировать

@p е р я использовал следующие после прочтения вашего поста и MSDN.

SignTool знак/С: /....../ MyFile.exe

SignTool знак/F C: /....../ MyCert.pfx/р MyPassword С:/....../MyFile.exe

Оба говорят, что они завершены с успехом. Однако при запуске блока кода выше выдает нулевой сертификат.

Теперь, что я, возможно, пропустил или делаю неправильно, я работаю с версией отладки Visual Studio, и это путь к exe, который я использовал для подписания.

с: .... \ LicensedControlTest \ OBJ \ x86 \ Debug

+1

Существует два разных типа подписи, которые часто путаются. Подписание сильного имени и подписание кода (т. Е. Цифровая подпись, такая как Authenticode). См. [This] (http://blogs.msdn.com/b/ericlippert/archive/2009/09/03/what-s-the-difference-part-five-certificate-signing-vs-strong-naming.aspx). Сертификат присутствует только для последнего подписания. Вы просто применили сильное имя к сборке. –

+0

@mikez Спасибо. Статья Эрика помогла объяснить различия. – GPGVM

ответ

1

Вы должны Authenticode подписать сборку. Вы можете сделать это, используя инструмент подписи файлов (Signcode.exe), который подпишет вашу сборку с подписью Authenticode. По сути, вы просто запускаете команду, используя signcode, которая будет подписи Authenticode вашей сборки.

Если вы посмотрите на документ для GetSignerCertificate, вы увидите, что ожидается, что null ожидается, если сборка не подписана под эгидой.

signcode /spc myCertificate.spc /v myKey.pvk myAssembly 

Это основы, вы можете найти более подробную информацию здесь на MSDN http://msdn.microsoft.com/en-US/library/9sh96ycy(v=vs.80).aspx.

+0

См. Редактирование.Я уверен, что вы на 100% правильны, и я просто делаю что-то неправильно. – GPGVM

 Смежные вопросы

  • Нет связанных вопросов^_^