Лучшие практики для подписи сборок .NET? - PullRequest
45 голосов
/ 30 августа 2008

У меня есть решение, состоящее из пяти проектов, каждый из которых компилируется в отдельные сборки. Прямо сейчас я подписываю их код, но я почти уверен, что делаю это неправильно. Какая лучшая практика здесь?

  • Подпишите каждый с другим ключом; убедитесь, что пароли разные
  • Подпишите каждый с другим ключом; используйте тот же пароль, если хотите
  • Подпишите каждый с тем же ключом
  • Что-то еще целиком

По сути, я не совсем уверен, что «подпись» делает с ними, или каковы лучшие практики здесь, так что более общее обсуждение было бы хорошо. Все, что я действительно знаю, это то, что FxCop кричал на меня, и это было легко исправить, установив флажок «Подписать эту сборку» и сгенерировав файл .pfx с помощью Visual Studio (2008).

Ответы [ 5 ]

43 голосов
/ 30 августа 2008

Если ваша единственная цель состоит в том, чтобы не дать FxCop кричать на вас, значит, вы нашли лучшую практику.

Лучшая практика подписания ваших сборок - это то, что полностью зависит от ваших целей и потребностей. Нам потребуется больше информации, например, о предполагаемом развертывании:

  • Для личного пользования
  • Для использования на компьютерах корпоративной сети в качестве клиентского приложения
  • Запуск на веб-сервере
  • Запуск в SQL Server
  • скачано через интернет
  • Продается на компакт-диске в термоусадочной пленке
  • Загружен прямо в кибернетический мозг
  • 1020 * Etc. *

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

ОБНОВЛЕНИЕ: Чем это выгодно для ваших конечных пользователей при развертывании через Интернет, если вы получили сертификат для подписи программного обеспечения от центра сертификации . Затем, когда они загружают ваши сборки, они могут проверить, что они пришли из Domenic's Software Emporium , и они не были изменены или повреждены на этом пути. Вы также захотите подписать установщик, когда он будет загружен. Это предотвращает предупреждение о том, что некоторые браузеры отображают, что оно было получено из неизвестного источника.

Обратите внимание, вы заплатите за сертификат подписи программного обеспечения. То, что вы получаете - это центр сертификации, который становится доверенной третьей стороной, которая подтверждает, что вы являетесь тем, кем вы себя называете. Это работает из-за сети доверия, которая прослеживает свой путь к корневому сертификату, установленному в их операционной системе. Можно выбрать несколько центров сертификации, но вы должны убедиться, что они поддерживаются корневыми сертификатами в целевой операционной системе.

8 голосов
/ 06 сентября 2008

Наиболее очевидное различие между подписанными и неподписанными сборками заключается в приложении ClickOnce. Если вы не подпишите его, то при первом запуске приложения пользователи получат страшное диалоговое окно с предупреждением «Неизвестный издатель». Если вы подписали его сертификатом от доверенного органа , тогда они увидят диалоговое окно, которое не так страшно. Насколько я знаю, подписание сертификата, который вы сами генерируете, не влияет на предупреждение "Неизвестный издатель". Instant SSL от Comodo содержит примеры диалогов.

Есть некоторые тонкие различия. Необходимо подписать сборку, прежде чем ее можно будет установить в глобальном кэше сборок (GAC), где она может использоваться несколькими приложениями. Подписание является неотъемлемой частью безопасности доступа к коду (CAS), но я не нашел никого, кто мог бы заставить CAS работать. Я почти уверен, что и GAC, и CAS отлично работают с сертификатами, которые вы сами генерируете.

3 голосов
/ 11 сентября 2008

Важно хранить секретный файл PFX, поскольку он содержит закрытый ключ.

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

Чтобы связать ваше имя с вашими сборками (в глазах Windows), вам необходимо получить цифровой сертификат (часть файла PFX, содержащая ваше имя), подписанный доверенным органом.

На самом деле вы получите новый сертификат, но с той же информацией.

Вам придется заплатить за этот сертификат (возможно, ежегодно), но центр сертификации будет эффективно ручаться за ваше существование (после того, как вы отправите им по факсу копии вашего паспорта или водительского удостоверения и национальное удостоверение личности). законопроект).

3 голосов
/ 30 августа 2008

Это помогает, потому что исполняемый файл ожидает сборку со строгим именем. Это останавливает любого, кто злонамеренно подставляет в другую сборку одну из ваших. Также пользователь может предоставить сборку CAS разрешения на основе строгого имени.

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

2 голосов
/ 30 августа 2008

Подпись используется для уникальной идентификации сборки. Более подробная информация содержится в Как подписать сборку (Visual Studio) .

С точки зрения лучшей практики, можно использовать один и тот же ключ, если сборки имеют разные имена.

...