Использование сертификатов

35

Чтобы потребители программного обеспечения могли проверять подлинность идентификационных данных его издателя, можно также использовать цифровые сертификаты и подписывать сборки. В зависимости от сферы применения приложения, наличие у него сертификата может быть обязательным. Например, наличие сертификата у приложения ClickOnce дает возможность пользователю, который его устанавливает, определять, стоит ли доверять издателю. Указание сертификата в отчете об ошибке Windows (Windows Error Reporting) может позволить Microsoft определить, с каким производителем придется иметь дело.

В коммерческой среде сертификаты обычно приобретаются у таких компаний, как Verisign или Thawte. Преимущество подхода с приобретением сертификата у известного стороннего поставщика состоит в том, что он обеспечивает высокий уровень доверия к подлинности сертификата; поставщик выступает в роли стороннего гаранта. Для целей тестирования, однако, в .NET предлагается утилита командной строки, позволяющая создавать тестовые сертификаты. Процесс создания сертификатов и их применения для публикации программного обеспечения является довольно сложным, но в этом разделе рассматривается один простой пример.

В этом примере предполагается, что есть некая вымышленная компания под названием ABC Corporation и требуется обеспечить доверие к ее программному продукту simple.ехе. Сначала нужно создать для этой компании тестовый сертификат, для чего служит следующая команда:

makecert -sv abckey.pvk -r -n "CN=ABC Corporation" abccorptest.cer

Выполнение этой команды приведет к созданию тестового сертификата под названием ABC Corporation и его сохранению в файле с именем abccorptest.cer. Аргумент -sv abckey.pvk позволяет создать специальный файл для сохранения секретного ключа. При создании этого файла появится приглашение ввести пароль, который нужно обязательно запомнить.

После создания сертификата можно переходить к созданию тестового сертификата издателя программного обеспечения с помощью утилиты Software Publisher Certificate Test (Cert2spc.ехе):

cert2spc abccorptest.cer abccorptest.spc

Имея сертификат, хранящийся в файле spc, и ключ, хранящийся в файле pvk, можно создать файл pfх, содержащий то и другое, с помощью утилиты pvk2pfx:

pvk2pfx -pvk abckey.pvk -spc abccorptest.spc -pfx abccorptest.pfx

Теперь можно подписать сборку с помощью утилиты signtool.ехе. Опция sign используется для подписания, опция -f указывает, что нужный сертификат находится в файле .pfx, а опция -v — что вывод должен отображаться в режиме расширенных сообщений:

signtool sign -f abccorptest.pfx -v simple.exe

Чтобы обеспечить доверие к сертификату, нужно установить его в разделе Trusted Root Certification Authorities (Доверяемые органы сертификации) и Trusted Publishers (Доверяемые издатели) с применением либо диспетчера сертификатов Certificate Manager (certmgr), либо оснастки Certificates (Сертификаты) консоли ММС. После этого с помощью утилиты signtool можно проверить, успешно ли прошло подписание:

> signtool verify -v -а simple.exe
Пройди тесты
Лучший чат для C# программистов