Подписание в цифровой форме после компиляции С развертыванием общедоступных сборок связана еще одна проблема. Шаги, описанные выше, годились для цифрового подписания сборки во время компиляции, так как использовался атрибут, определяющий файл ключей, который содержал открытый и секретный ключи Но часто случается так, что ни один из программистов, разрабатывающих компоненты, которые будут упакованы в сборки, не знает секретного ключа всей организации. В этом случае при разработке и испытании программисты должны использовать временный секретный ключ, но когда придет время отправить сборку клиентам, назначенный представитель компании выполняет окончательное цифровое подписание, используя официальный секретный ключ организации, хранимый в строгой тайне. Это делается при помощи инструмента Sn.exe, с использованием опции -R, где "R" означает "resign" ("подписать заново"). Как правило, предварительно с помощью опции -k утилиты Sn.exe генерируется официальная криптографическая пара. Затем, используя опцию -R утилиты Sn. ехе. ставится подпись на каждой новой сборке. sn -k TrueKeyPair.snk
Хотя здесь две команды показаны вместе,
обычно не нужно генерировать новую
криптографическую пару каждый раз, когда вы
заново подписываете очередную новую сборку.
После второй команды на пульте появится
сообщение Assembly 'SharedComponent.dll' successfully re-signed (Сборка
'SharedComponent.dll' успешно подписана заново).
AssemblyKeyFileAttribute. Предположим, что вы сгенерировали криптографическую пару открытого и секретного ключа так, как описано выше. Тогда вы с помощью опции -р утилиты Strong Name можете получить только открытый ключ, все еще сохраняя в тайне секретный ключ. sn -p TrueKeyPair.snk PublicKey.snk Затем вы добавляете следующие два атрибута к вашему коду: [assembly:AssemblyDelaySignAttribute(true)];
Сборка все еще не имеет правильной подписи (сигнатуры). Вы не сможете установить ее в глобальном кэше сборок или загрузить ее из каталога приложения. Вы можете отключить проверку подписи (сигнатуры) конкретной сборки, используя опцию -Vr утилиты Strong Name. sn -Vr SharedComponent.dll Перед поставкой сборку надо снабдить правильной сигнатурой (подписью), чтобы она могла быть развернута как общедоступная сборка. Для этого используйте опцию -R утилиты Strong Name и запишите криптографическую пару открытого и секретного ключей. sn -R SharedComponent.dll TrueKeyPair.snk |