2010-11-07 5 views
4

Как я могу подписать Visual C# исполняемый файл?создание ключа и подпись исполняемого файла с signtool

SignTool.exe не может найти сертификат.

Как создать самозаверяющий ключ и сертификат и иметь signtool, чтобы увидеть сертификат и использовать его?

Установлены OpenSSL и Visual Studio 2010 Express. Запуск Windows 7 Ultimate x64.

Использование SignTool.exe из набора драйверов для Windows.

ответ

9

Использование самозаверяющих сертификатов для цифровой подписи ваших двоичных файлов в значительной степени идет против concept of using digital certificates с программами. Основная идея состоит в том, чтобы доказать, что код был создан вами (подлинность) и не был изменен с момента его выпуска (целостности). Это необходимо сделать, используя подписанный сертификат, подписанный доверенным центром сертификации (CA).

С .Net, когда двоичный код имеет цифровую подпись, он является automatically проверен на целостность и аутентичность во время запуска. Хотя я лично не проверял это, использование самозаверяющего сертификата, вероятно, вызовет у вас массу проблем.

Если вы хотите подписывать цифровую подпись своих программ, вам необходимо инвестировать в сертификат подписи кода из ЦС. Есть несколько компаний, которые могут предоставить эту услугу (Verisign, Thawte) за отдельную плату.

Хотя плата может показаться немного экстремальной ценой, помните, что вы не просто покупаете цифровой сертификат, но и проверяете его на 24/7. Каждый раз, когда кто-то запускает вашу программу, он гарантирует, что программа была написана вами, и что программа не была изменена с момента ее выпуска.

Как только у вас есть сертификат, вы можете подписаться на цифровую подпись своей программой, выполнив следующие шаги: How to: Sign Application and Deployment Manifests.

Обновление: Если эта программа является строго внутренним приложением (только для вас или вашей компании), you can created your own CA. Поскольку вы будете единственным, кто его запускает, вам нужно будет только проверить его. Сертификат ЦС должен быть установлен как Trusted Root Certificate на всех машинах, которые будут запускать программу (или если у вас есть доступ к Windows Server, вы можете настроить настоящий рабочий ЦС).

+1

Да, это внутреннее приложение. Спасибо за последние две ссылки. Сертификат установлен как доверенный корневой сертификат. Единственная проблема заключается в том, что SignTool.exe по-прежнему дает следующую ошибку: «Ошибка SignTool: не найдены сертификаты, соответствующие всем заданным критериям». Спасибо за ответ. Должен зарегистрироваться. – Kevin

+0

Почему бы не использовать встроенный метод для подписания исполняемого файла? Компилятор C# имеет возможность подписать код для вас, как описано в http://msdn.microsoft.com/en-US/library/che5h906%28v=VS.100%29.aspx. – jveazey

+0

Никогда не видел этого. Благодарю. Сгенерировал тестовый сертификат с vs. работает с signtool. К сожалению, я установил мой браузер для удаления файлов cookie при выходе, и у меня еще нет учетной записи stackoverflow. спасибо за вашу помощь. – Kevin