Как установить имя издателя для приложения Windows Forms - PullRequest
20 голосов
/ 29 июля 2011

Я создал настройку приложения Windows Forms . После установки этой настройки в Windows 7 она отображает что-то вроде этого:

Name: my application.exe  
Publisher: unknown publisher  
Type: application  
From: my application.exe  

Я хочу установить имя издателя. Как установить имя издателя?

1 Ответ

19 голосов
/ 29 июля 2011

Вам необходимо подписать цифровой код выходного кода. Я могу начать с статьи Подписание и проверка кода с помощью Authenticode .

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

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

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


MakeCert

Используйте тестовую программу MakeCert для генерации теста X.509 сертификат . MakeCert выполняет следующие задачи:

  1. Создает пару открытых / закрытых ключей для цифровых подписей и связывает ее с выбранным вами именем.
  2. Связывает пару ключей с выбранным вами именем издателя.
  3. Создает X.509 сертификат , подписанный тестовым корневым ключом или указанным вами, который связывает ваше имя с открытой частью пары ключей. Сертификат выводится в файл, в хранилище сертификатов системы или в оба.

MakeCert Internet Explorer 3.02 UPD Пример

Ниже приведен пример создания сертификата с использованием параметров UPD для Microsoft Internet Explorer 3.02:

MakeCert -k:c:\KeyStore\MyKey.pvk -n:CN=MySoftwareCompany Cert.cer

В этом примере создается файл сертификата с именем Cert.cer . Открытая часть пары ключей с именем MyKey привязана к издателю, MySoftwareCompany .

Cert2SPC

После того, как вы сгенерировали сертификат, вы можете создать сертификат публикации программного обеспечения с помощью программы Cert2SPC. Эта программа объединяет несколько X.509 сертификатов в PKCS # 7 объект с подписанными данными. Обратите внимание, что эта программа предназначена только для тестирования. Действительный сертификат публикации программного обеспечения получен из центра сертификации. Вот пример:

Cert2SPC MyCert.cer MyCert.spc

Обертывает сертификат X.509 , MyCert.cer в PKCS # 7 сертификат публикации программного обеспечения , называемый MyCert.spc .

SignCode

Последний шаг - подписать файл с помощью программы SignCode. Эта программа будет:

  1. Создание Криптографического дайджеста файла.
  2. Подпишите дайджест своим закрытым ключом.
  3. Скопируйте X.509 сертификаты из сертификата публикации программного обеспечения в новый PKCS # 7 объект с подписанными данными. Объект PKCS # 7 содержит серийный номер номера и эмитенты сертификатов, использованных для создания подписи, сертификаты и подписанный дайджест информации.
  4. Вставить объект в файл.
  5. Дополнительно, он может добавить метку времени в файл. Отметка времени всегда должна добавляться при подписании файла. Однако SignCode также имеет возможность добавлять метку времени к ранее подписанному файлу с некоторыми ограничениями (см. Примеры, следующие за таблицей параметров).

Как только файл будет подписан (при условии, что у вас есть действующий сертификат) и отметка времени, файл может быть распространен среди ваших клиентов. Обратите внимание, что сертификаты, созданные с помощью тестовых программ MakeCert и Cert2SPC, НЕ действительны для подписания кода, который будет распространяться среди общественности. Независимые поставщики программного обеспечения должны получить сертификат от GTE, VeriSign Inc. или другого центра сертификации для подписания кода, который будет распространен среди общественности.

Примеры SignCode для Internet Explorer 3.02 UPD

Вот два примера того, как подписать и поставить отметку времени в файле с помощью параметров UPD для Microsoft Internet Explorer 3.02. Первый использует имя закрытого ключа MyKey , а второй использует файл закрытого ключа My.pvk :

SignCode -prog MyControl.exe -spc Cert.spc -pvk MyKey -timeStamper http://timestamp.verisign.com/scripts/timstamp.dll
SignCode -prog MyControl.exe -spc Cert.spc -pvk My.pvk -timeStamper http://timestamp.verisign.com/scripts/timstamp.dll

Примечание. В приведенном выше URL-адресе файл timstamp.dll указан правильно. Это не опечатка.

В обоих случаях объект PKCS # 7, Cert.spc, встроен в дайджест файла MyControl.exe. В первом примере дайджест подписывается закрытым ключом пары ключей MyKey и добавляется отметка времени. Во втором примере дайджест подписывается файлом закрытого ключа My.pvk и добавляется отметка времени.

...