доступа к строгому имени в сборке можно применить утилиту
secutil.exe
с файлом манифеста сборки. Воспользуемся
secutil.exe
для просмотра данных устойчивого имени нашей сборки. Мы добавим параметр
– hex
, чтобы открытый ключ был показан в шестнадцатеричном представлении (как в
caspol.exe
), и аргумент
strongname
, определяющий, что мы хотим увидеть строгое имя. Введите эту команду, и появится листинг, содержащий открытый ключ устойчивого имени, имя сборки и версию сборки.
secutil.exe -hex -strongname securityapp10.exe
Microsoft (R) .NET Framework SecUtil 1.0.xxxx.x
Copyright (c) Microsoft Corp 1999-2001. All rights reserved.
Можно заметить, что по умолчанию устанавливаются два строгих имени групп кода. Одно из них является ключом устойчивого имени кода Microsoft, а второй ключ устойчивого имени предназначен для частей .NET, представленных для стандартизации в ЕСМА, над которыми Microsoft имеет значительно меньший контроль.
Распространение кода с помощью сертификатов
В последнем разделе было рассмотрено, как можно применять уникальное устойчивое (строгое) имя к сборке, чтобы системный администратор мог явно предоставить сборкам полномочия, которые соответствуют этому устойчивому имени с помощью группы доступа к коду. Этот метод управления политикой системы безопасности может быть весьма эффективным, но иногда необходимо работать на более
высоком уровне, где администратор политики системы безопасности предоставляет полномочия на основе издателя программного обеспечения, а не каждого отдельного программного компонента.
Чтобы предоставить информацию об издателе программного обеспечения, мы используем цифровые сертификаты и подписываем сборки, чтобы потребители программного обеспечения могли проверить идентичность издателя программного обеспечения. В коммерческой среде мы получаем сертификаты от таких компаний как Verisign или Thawte.
Преимущество покупки сертификата от внешнего поставщика перед созданием своего собственного состоит в том, что он предоставляет высокие уровни надежности в своей идентичности; поставщик действует как надежная третья сторона. Однако в целях тестирования .NET включает утилиту командной строки, которую можно использовать для создания тестового сертификата. Процесс создания сертификатов и их использование для публикации программного обеспечения является сложным, но чтобы дать представление о том, что сюда вовлечено, мы разберем пример, не вдаваясь в подробности.
Представим, что мы являемся компанией ABC Corporation, и создадим сертификат для нашего программного продукта "ABC Suite". Прежде всего необходимо создать тестовый сертификат, для чего вводим команду:
Эта команда создает тестовый сертификат с именем "ABC Corporation" и сохраняет его в файле
abccorptest.cer
. Аргумент
– sk
ABC создает расположение контейнера ключа, который используется криптографией с открытым ключом.
Чтобы подписать сборку с помощью сертификата, применяется утилита
signcode.exe
с файлом сборки, содержащим манифест сборки. Часто простейшим способом подписать сборку является использование утилиты
signcode.exe
в ее режиме мастера. Для запуска мастера введите
signcode.exe
без параметров:
Если нажать кнопку Next, вам будет предложено определить, где находится файл, который надо подписать. Для сборки подписывается файл, содержащий манифест.
Если нажать кнопку Next и выбрать режим Custom в следующем окне, будет предложено определить сертификат, который должен использоваться для подписи сборки. Нажав Select from File и указав файл
abccorptest.cer
, увидите экран подтверждения:
Появится окно, которое запросит файл с закрытым ключом. Этот файл с ключом был создан утилитой
makecert
, поэтому мы можем выбрать параметры, как показано на следующем снимке экрана. Поставщик криптографической службы является приложением, которое реализует криптографические стандарты. Криптография с открытым ключом была рассмотрена в главе 10.