У меня были подобные проблемы, и после многих лет разработки C# в (VS 2005 по 2012 год) никогда не удалось найти способ использования .pfx-файла из центра сертификации для обозначения кода из свойств проекта. Существуют атрибуты сборки и параметры проекта для подписи кода, все из которых, похоже, мешают друг другу, и ни одна из них не работает. В свойствах проекта запрашивается пароль для pfx (который, похоже, не хранится нигде), а затем подписание происходит с ошибкой, потому что пароль сломан. Я подозреваю, что никто в MS никогда не использовал эту функцию для подписания кода с купленным сертификатом, только с сертификатами самоподписывания, которые VS создал локально.
Если вы хотите ввести в заблуждение свой код, вы также должны его подписать после obfuscation, поэтому вы не могли бы использовать какие-либо из этих методов, даже если бы они работали.
Единственное надежное решение, которое я нашел, - использовать signtool.exe как шаг после сборки. И как только вы настроите это, вы, вероятно, больше не заботитесь о том, есть ли лучший способ.
При покупке сертификата он будет обычно установлен непосредственно в хранилище сертификатов вашего компьютера, так что вы можете закодировать подписывать с ним непосредственно из магазина на этапе после сборки, что-то вроде этого:
"C:\Program Files (x86)\Windows Kits\8.0\bin\x64\signtool" sign
/n CertificateName
/tr http://timestamp.comodoca.com/rfc3161
"$(TargetPath)"
Примечания:
- Вам может понадобиться для поиска, чтобы найти, где signtool.exe находится на вашем компьютере, и использовать один в самой последней версии SDK вы можете найти, чтобы получить до даты версии - вы должны использовать полный путь в команде post-build для работы
- «Имя сертификата» - это имя приобретенного сертификата в вашем личном магазине сертификатов
- URL-адрес здесь является примером (в данном случае для сервера timestamp Comodo), просто измените его на сервер у своего собственного провайдера
Или сделать это с помощью PFX-файл:
"C:\Program Files (x86)\Windows Kits\8.0\bin\x64\signtool" sign
/f CertificateFile.pfx /p Password
/tr http://timestamp.comodoca.com/rfc3161
"$(TargetPath)"
(где CertificateFile.pfx является файл PFX, и "Password" пароль для использования файла. Чтобы получить файл pfx из хранилища сертификатов, запустите «certmgr.msc» и найдите сертификат (возможно, в Личном \ Сертификаты), щелкните его правой кнопкой мыши и выберите «Все задачи> Экспорт ...»)
Super easy.Почему никто нигде в Интернете (например, сертификационные органы, которые продают вещи) просто говорят это в первую очередь ?!
Как раз для того, чтобы начать сузить дело, вы пытались подписаться с другим файлом pfx? Это поможет показать, возможно ли это действительно странная ошибка VS или что-то уникальное в вашем исходном файле pfx. –
Я пробовал тестовый ключ, созданный VS, и он работает. Это действительно единственный тип ключа, который у меня есть. – thecaptain0220
Вот шаг за шагом о том, как создать собственный файл pfx, используя два инструмента командной строки от Microsoft (http://msdn.microsoft.com/en-us/library/ff699202.aspx). Вы хотите начать следовать инструкциям во втором заголовке («Создать тестовый сертификат») –