Для дальнейших экспериментов нам понадобится создать два сертификата с именами 'Попов надежный' и 'Попов ненадежный'. После нажатия кнопки OK в случае успешного создания сертификата на экран выводится диалоговое окно с информацией об этом (рис. 4.4).
Управление сертификатами с помощью ММС
Для того чтобы посмотреть свойства созданных сертификатов, нам потребуется запустить mmc
либо в командной строке, либо с помощью пункта Выполнить (Run) меню Пуск (Start). В результате на экране появится окно новой консоли (рис. 4.5).

Рис. 4.5. Новая консоль ММС
Теперь добавим в консоль оснастку Сертификаты (Certificates). Для этого нужно в меню Консоль (Console) выбрать пункт Добавить/удалить оснастку (Add/Remove Snap-in), после чего появится диалоговое окно, показанное на рис. 4.6.

Рис. 4.6. Диалоговое окно добавления/удаления оснасток для консоли ММС
После нажатия кнопки Добавить (Add) выводится список всех имеющихся оснасток (рис. 4.7).
Из этого списка нужно выбрать Сертификаты (Certificates) и нажать кнопку Добавить (Add). После этого в новом диалоговом окне отмечаем, что добавляемая оснастка будет управлять сертификатами для своей учетной записи (рис. 4.8) и нажимаем кнопку Готово (Finish).
Никаких других оснасток в окно консоли мы добавлять не будем, поэтому нажимаем кнопку Закрыть (Close) в списке оснасток и кнопку OK в окне добавления/удаления оснасток. Созданные нами сертификаты будут находиться в разделе Личные Сертификаты (PersonalSertificates) (рис. 4.9).
Выделив нужный сертификат в списке и нажав клавишу <Enter>, мы выведем окно с описанием свойств сертификата (рис. 4.10).

Рис. 4.7. Список всех оснасток

Рис. 4.8. Выбор типа сертификатов, которым будет управлять добавляемая оснастка Сертификаты

Рис. 4.9. Расположение личных сертификатов

Рис. 4.10. Свойства сертификата 'Попов надежный'
Как мы видим, для обоих новых сертификатов не установлено доверие. Для того чтобы установить доверие к одному из сертификатов ('Попов надежный'), достаточно просто перетащить при помощи мыши этот сертификат в раздел Доверенные корневые центры сертификации | Сертификаты (Trusted Root Certification Authorities) (рис. 4.11).
Если при перетаскивании сертификата в новое место держать нажатой клавишу <Ctrl>, то сертификат будет не перемещен, а скопирован.

Рис. 4.11. Сертификаты, к которым установлено доверие
Свойства сертификата 'Попов надежный' после установки доверия к нему показаны на рис. 4.12.
Выполним теперь экспорт в файл сертификата 'Попов ненадежный' (это понадобится нам в дальнейшем при построении политики ограниченного использования программ). Для этого следует выделить нужный сертификат и выбрать в меню Действие | Все задачи (Action | All Tasks) пункт Экспорт (Export), после чего запустится мастер экспорта сертификатов, в котором нужно согласиться со всеми настройками, предлагаемыми по умолчанию, а в качестве имени экспортируемого файла указать 'C:ScriptПопов.cer'.

Рис. 4.12. Новые свойства сертификата 'Попов надежный'
Добавление к сценарию цифровой подписи
Подписать файл со сценарием WSH можно двумя способами. Во-первых, можно использовать программу SignCode.exe, с помощью которой производится подпись любого исполняемого кода. Однако эта программа не является стандартной частью операционной системы Windows, ее нужно устанавливать отдельно. Поэтому далее мы будем рассматривать второй способ подписи сценариев — с помощью метода SignFile
объекта Scripting.Signer
, который регистрируется в системе при установке WSH 5.6.
В листинге 4.7 приведен сценарий SignScript.wsf, с помощью которого мы будем подписывать файлы сценариев различных типов, используя личные сертификаты 'Попов надежный' и 'Попов ненадежный'. При запуске этого сценария нужно указать два именных параметра командной строки: /file
для задания пути к подписываемому файлу и /cert
, содержащий название цифрового сертификата, на основе которого будет создаваться подпись. Эти параметры в сценарии подставляются в качестве аргументов метода SignFile
объекта Scripting.Signer
:
//Создаем объект Scripting.Signer
Signer = WScript.CreateObject('Scripting.Signer');
File = WScript.Arguments.Named('file'); //Имя файла
Cert = WScript.Arguments.Named('cert'); //Название сертификата
Signer.SignFile(File, Cert); //Подписываем файл
В методе SignFile
может быть указан третий необязательный параметр, задающий путь к хранилищу сертификатов. В сценарии SignScript.wsf этот параметр не используется, т.к. для создания подписи применяются личные сертификаты, находящиеся на локальной машине.