Доверенные внебраузерные Silverlight приложения. Добавление цифровой подписи.
В Silverlight 4 появилась возможность подписать .xap файл Silverlight приложения. Наибольший смысл добавление цифровой подписи имеет при разработке доверенных внебраузерных Silverlight приложений, так как в этом случае мы может сделать диалог их установки более дружественным пользователю. Для добавления цифровой подписи у Вас должны быть нужный сертификат (Code Signing Certificate), который не является бесплатным. Если сертификата у Вас нет, его можно купить, например, у компании VeriSign (http://www.verisign.com/). Наверное, большинство компаний, разрабатывающих ПО, нужный сертификат имеют, и что-то ещё тут говорить бессмысленно. Но для начинающего разработчика цена сертификата может быть весьма ощутимой. Итак, к примеру, возьмём тестовое внебраузерное Silverlight приложение, не являющееся доверенным. Запустим его и попытаемся установить. Мы увидим стандартный диалог установки, в котором отображается иконка нашего приложения, и нет никаких предупреждений от системы безопасности. Теперь давайте посмотрим, что было бы в случае, если бы наше приложение являлось доверенным внебраузерным, но не имело цифровой подписи. Мы видим совершенно другой диалог установки, который говорит о том, что издатель данного приложения не может быть проверен. Пользователь видит, что перед ним предупреждение системы безопасности, и он может задуматься над тем, стоит ли вообще данное приложение устанавливать. Кроме того, чтобы не отвлекать пользователя от основного сообщения, галочки задающие места размещения ярлыков приложения скрыты в разделе «More options». Давайте теперь подпишем наше доверенное внебраузерное Silverlight приложение. Для этого воспользуемся программой «signtool», которая применяется и для подписи обычных Windows приложений. Хочется отметить, что я не буду вдаваться в детали механизма работы центров сертификации и сертификатов, а опишу весь процесс на базовом, но достаточном для работы, уровне. Так как не у всех есть нужный сертификат или же доступ к нему, для целей разработки и тестирования Вы можете сами сгенерировать сертификат и добавить его в «Trusted Root Certification Authorities» своего компьютера. Данным действием Вы говорите заявляете о том, что доверяете сгенерированному сертификату. Так как всё происходит на Вашем компьютере, прописывание самогенерированным сертификатом доверенных Silverlight приложений не повлияет на диалог их установки на других компьютерах. Однако при использовании домена Active Directory Вы можете добиться того, что сгенерированному сертификату будут доверять все компьютеры домена. Давайте запустим командную строку Visual Studio Command Prompt, находящуюся в подпапке «Visual Studio Tools» папки «Microsoft Visual Studio 2010» в меню «Пуск», и создадим новый сертификат: makecert -r -pe -ss PrivateCertStore -n "CN=DemoTestCert" Demo.cer Мы сгенерировали сертификат. Его можно использовать для подписи нашего Silverlight приложения OOBSilverlightApplication.xap: signtool sign /v /s PrivateCertStore /n DemoTestCert OOBSilverlightApplication.xap После выполнения команд мы увидим сообщение о том, что всё прошло успешно: Если мы сейчас попытаемся установить наше приложение, мы не увидим никакой разницы с тем, что было ранее в случае неподписанного Silverlight приложения. Разница была бы заметна, если бы использовался сертификат от доверенного центра сертификации, а не сгенерированный нами. Давайте запустим файл «Demo.cer» и в появившемся диалоговом окне нажмём на кнопку установки сертификата («Install Certificate…»). В мастере установки в разделе «Certificate Store» выберем «Trusted Root Certification Authorities». Далее, нажав множество раз на кнопки «Next» и «OK», собственно установим сертификат. Теперь вернёмся к Silverlight приложению и попробуем его установить. Мы увидим другой диалог установки приложения, выполненный в голубых тонах. В новом диалоге кроме всего прочего отображается иконка нашего приложения. Бесспорно, что такому диалогу установки пользователь будет доверять намного больше. Подписывать Silverlight приложения из командной строки просто, но что делать, если нам хочется производить данное действие автоматически из Visual Studio при каждой перекомпиляции? Для этого зайдём в свойства проекта Silverlight приложения и откроем вкладку «Build Events». Зададим «Post-build event command line»: "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\signtool.exe" sign /v /s PrivateCertStore /n DemoTestCert $(TargetName).xap В данном случае используется полный путь до «signtool», а вместо имени .xap файла задаётся $(TargetName).xap. Теперь наше приложение будет подписанным после каждой компиляции.
Recent Comments