Использование самозаверяющих сертификатов для цифровой подписи ваших двоичных файлов в значительной степени противоречит концепции использования цифровых сертификатов с программами. Основная идея состоит в том, чтобы доказать, что код был создан вами (подлинность) и не был изменен с тех пор, как вы его выпустили (целостность). Это должно быть сделано с использованием подписанного сертификата, который подписан доверенным центром сертификации (CA).
В .Net, когда двоичный файл имеет цифровую подпись, он автоматически проверяется на целостность и подлинность при запуске. Хотя я лично не проверял это, использование самозаверяющего сертификата, вероятно, вызовет у вас много проблем.
Если вы хотите поставить цифровую подпись в своих программах, вам необходимо инвестировать в сертификат подписи кода от CA. Существует ряд компаний, которые могут предоставить эту услугу ( Verisign , Thawte ) за плату.
Хотя плата может показаться немного завышенной, помните, что вы покупаете не только цифровой сертификат, но и 24/7 проверку этого сертификата. Каждый раз, когда кто-то запускает вашу программу, он будет гарантировать, что она была написана вами, и что программа не была изменена с момента ее выпуска.
Получив сертификат, вы можете подписать программу цифровой подписью, выполнив шаги, описанные в Как подписать манифесты приложений и развертывания .
Обновление: Если эта программа является исключительно внутренним приложением (ограниченным для вас или вашего бизнеса), вы можете создать свой собственный CA . Поскольку вы будете единственным, кто его запускает, только вам нужно будет его проверить. Сертификат CA должен быть установлен как Trusted Root Certificate на всех машинах, на которых будет запускаться программа (или, если у вас есть доступ к Windows Server, вы можете настроить реально работающий CA).