Пример подписывания сборки
В следующем примере рассматривается создание параллельной подписанной сборки, состоящей из манифеста сборки, каталога проверки и файлов сборки. Общие параллельные сборки должны быть подписаны. Операционная система проверяет подпись сборки перед установкой общей сборки в глобальное параллельное хранилище (WinSxS). Это затрудняет подделку издателя параллельной сборки.
Обратите внимание, что изменение файлов сборки или содержимого манифеста после создания каталога сборок делает недействительными каталог и сборку. Если после создания и подписывания каталога необходимо обновить файлы сборки или манифест, необходимо снова подписать сборку и создать новый каталог.
Начните с файлов сборки, манифеста сборки и файла сертификата, который будет использоваться для подписи сборки. Размер файла сертификата должен быть не более 2048 бит. Вы не обязаны использовать доверенный сертификат. Сертификат используется только для проверки того, что сборка не повреждена.
Запустите служебную программуPktextract.exe , предоставленную в пакете sdk для Microsoft Windows, чтобы извлечь маркер открытого ключа из файла сертификата. Для правильной работы Pktextract файл сертификата должен находиться в том же каталоге, что и служебная программа. Используйте извлеченное значение маркера открытого ключа для обновления атрибута publicKeyToken элемента assemblyIdentity в файле манифеста.
Ниже приведен пример файла манифеста с именем MySampleAssembly.manifest. Сборка MySampleAssembly содержит только один файл, MYFILE.DLL. Обратите внимание, что значение атрибута publicKeyToken элемента assemblyIdentity было обновлено на значение маркера открытого ключа.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="Microsoft.Windows.MySampleAssembly"
version="1.0.0.0"
processorArchitecture="x86"
publicKeyToken="0000000000000000"/>
<file name="myfile.dll"/>
</assembly>
Затем запустите служебную программуMt.exe , предоставленную в пакете Windows SDK. Файлы сборки должны находиться в том же каталоге, что и манифест. В этом примере это каталог MySampleAssembly. Вызовите Mt.exe для примера следующим образом:
C:\ MySampleAssembly>mt.exe -manifest MySampleAssembly.manifest -hashupdate -makecdfs
Вот как выглядит пример манифеста после выполнения Mt.exe. Обратите внимание, что при выполнении Mt.exe с параметром hashupdate добавляется хэш SHA-1 файла. Не изменяйте это значение.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name=" Microsoft.Windows.MySampleAssembly"
version="1.0.0.0"
processorArchitecture="x86"
publicKeyToken="0000000000000000"/>
<file name="myfile.dll"
hash="a1d362d6278557bbe965a684ac7adb4e57427a29" hashalg="SHA1"/>
</assembly>
При выполнении Mt.exe с параметром -makecdfs создается файл с именем MySampleAssembly.manifest.cdf, описывающий содержимое каталога безопасности, который будет использоваться для проверки манифеста.
Следующим шагом является запуск Makecat.exe над этим CDF-файлом, чтобы создать каталог безопасности для сборки. Вызов Makecat.exe в этом примере будет выглядеть следующим образом:
c:\MySampleAssembly>makecat MySampleAssembly.manifest.cdf
Последним шагом является запуск SignTool.exe для подписи файла каталога с помощью сертификата. Это должен быть тот же сертификат, который использовался в предыдущем примере для создания маркера открытого ключа. Дополнительные сведения о SignTool.exe см. в разделе SignTool . Вызов SignTool для примера будет выглядеть следующим образом:
c:\MySampleAssembly>signtool signtool /f <fullpath>mycompany.pfx /du https://www.mycompany.com/MySampleAssembly /t https://timestamp.digicert.com MySampleAssembly.cat
Если у вас есть цифровой сертификат, прошедший проверку подлинности, и ваш центр сертификации использует формат файла PVK для хранения закрытого ключа, вы можете использовать средство импорта файлов цифровых сертификатов PVK (pvkimprt.exe) для импорта ключа в поставщик служб шифрования (CSP). Эта служебная программа позволяет экспортировать данные в стандартный отраслевой формат PFX/P12. Дополнительные сведения об импорте файлов цифровых сертификатов PVK см. в разделе Ресурсы развертывания библиотеки MSDN или обратитесь в центр сертификации.
См. также статью Создание подписанных файлов и каталогов.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по