Технология создания, работы и проверки в Интернет-браузерах апплетов, подписанных цифровой подписью.

 

 

1)   Типы сертификатов.

На данный момент для проверки достоверности информации в сети Интернет существуют много типов сертификатов, в том числе сертификаты серверов (или SSL сертификаты), сертификаты электронной почты, сертификаты разработчиков и т.д. Каждый из них служит для определённой цели. В данной статье разговор пойдёт о сертификате разработчика (Software Publisher Certificate), так как именно с помощью него и производится корректная работа с подписанием определённых исполняемых объектов, в том числе и апплетов.

 

2)   Особенности технологии проверки сертификатов.

Следует так же различать тот момент, что проверка электронной подписи конкретного обьекта (апплета), который подписан с помощью сертификата разработчика и который (апплет) содержится в загружаемой в клинтский браузер страничке, это совсем отдельная процедура. А проверка сертификата сервера при установлении связи по SSL протоколу с этим сервером это другая процедура. Они независимы друг от друга и могут работать как совместно, так и без друг дружки.

 

3)    Технологии проверки подписи.

Третьим важным моментом является тот факт, что в отличие от протокола SSL, который в настоящий момент признан стандартом и обязателен к поддержке всеми браузерами, технология проверки цифровой подписи исполняемых объектов (в том числе апплетов) не является унифицированной. С другой стороны назревшая необходимость такой аутентификации заставляет разработчиков браузеров работать в этом направлении. Вследствии этого каждый разработчик ПО создал свою технологию подписания и проверки этой подписи. Как пример, можно привести технологию от производителей Netscape Communicator'а - signtool, от фирмы Microsoft, производителей Internet Explorer'а - signcode, и от основателя языка Java, фирмы Sun - jarsigner и т.д. Следует знать, что эти технологии мало совместимы друг с другом, т.е., если  рассуждать теоретически, исполняемый файл (апплет), подписанный по технологии Netscape, при загрузке в Internet Explorer в составе html страницы, проверяться на корректность его цифровой подписи не будет, и наоборот.

 

4)   Практическая реализация апплетов с электронной подписью.

В настоящее время самыми распространёнными браузерами являются Netscape Communicator (NC) и Internet Explorer (IE), по-этому при разработке нашей системы примем тот факт, что если наш апплет будет работать под этими двумя типами браузеров, то этого будет достаточно. Апплеты же со своей стороны могут состоять из одного или нескольких файлов с расширением ".class". Для совместимости с двумя типами браузеров надо сделать следущее:

·       для Netscape надо из файла(ов) ".class" сделать один файл ".jar", а для Explorer'а из этих же файла(ов) ".class" сделать один файл ".cab".

·       для Netscape надо подписать файл ".jar", а для Explorer'а надо подписать соответствующий файл ".cab".

·       в странице ".html" разместить следующий текст для работы апплета (twist - это имя апплета):

 

<applet code=twist archive=twist.jar>

<PARAM   NAME=cabbase   VALUE=twist.cab>

<PARAM …>

</applet>

 

Этот фрагмент кода требует следующего объяснения: при своей работе браузеры по разному обрабатывают тег <applet>. NC обращает внимание на параметр archive этого тэга и никак не риагирует на параметр с именем cabbase, а IE обрабатывает как раз этот параметр cabbase, но никак не риагирует на параметр archive. Таким образом, NC загружает с сервера ".jar" файл и проверяет его цифровую подпись по своей технологии, а IE загружает на клинтскую часть ".cab" файл и проверяет цифровую подпись данного файла по своей технологии (при тестировании выяснилось, что в принципе IE может работать и с jar файлами, но подписать файлы такого типа по технологии Microsoft, а соответственно и заставить проверять подпись в браузере не удалось. А то можно бы было обойтись и только одним ".jar" файлом без ".cab" файлов). Всё сказанное выше есть продукт кропотливых исследований, так что это надо принять как есть.

 

5)   Подписание апплета по технологии Microsoft.

Для реализации данной задачи надо иметь инструменты для создания ".cab" файлов и программу цифровой подписи от Microsoft.

 

Создание ".cab" файла.

Если у вас нет инструментов для из создания, то скачайте один из них здесь. После скачивания запустите файл "cab-sdk.exe", который устанавливает продукт в отдельную директорию. После этого пропишите в системной переменной "PATH" в файле "autoexec.bat" путь в директорию "BIN", где располагается утилита этого пакета "makecab.exe", после чего перезагрузите компьютер. Кроме того, для корректной генерации файла ".cab" по описанному пути, необходимо создать ещё один файл, который будет использоваться при работе. Это обычный текстовый файл, назовите его любым именем. Мой файл представлен ниже:

 

;** Этот файл нужен для создания cab файла из файла twist.class

.Set CabinetNameTemplate=twist.cab  ; Создаём файл twist.cab

.Set Cabinet=on   ; По этой опции говорится о том, что надо размещать в файле cab.

.Set Compress=on  ; В этой говорится, что надо сжимать.

twist.class       ; Этот файл и помещаем в cab.

 

Я назвал этот файл "twist.ddf". Его синтаксис следущий: символ ";" говорит о комментарии, параметр .Set CabinetNameTemplate указывает имя создаваемого файла, параметр .Set Cabinet указывает на создание файла типа ".cab", параметр .Set Compress указывает на то, что все включаемые файлы будут сжиматься. Далее идёт список файлов, которые вы хотите включить в ".cab" файл, причём каждый файл описан на отдельной строке и кроме того, разрешается указывать имена файлов в поддиректориях, к примеру, "dir/file" (в данном случае весь апплет состоял из одного файла, который и указан в последней строке примера). Если хотите создать ".cab" файл с поддиректориями, то в каждой строке надо писать два одинаковых литерала с полным путём (поддиректориями) файла. После всего проделанного выше создаём директорию (если надо, с поддиректориями) с файлами, включаемыми в ".cab" файл, помещаем в неё файл описания, представленный чуть выше, переходим в эту директорию и запускаем на выполнение команду следущего вида:

"MakeCAB /f <файл описания>", где я в качестве описания применил "twist.ddf", а именно, "MakeCAB /f twist.ddf". Когда закончилось выполнение команды, то в текущей директории была создана поддиректория, в которой лежал созданный файл "twist.cab". На этом, процесс создания ".cab" файла можно считать завершённым.

 

Подписание ".cab" файла.

Для подписания ".cab" файла надо иметь набор инструментов от Microsoft. Его можно скачать здесь. После получения файла "codesign.exe" надо его запустить и он создаст в указанной директории необходимые файлы. После чего эту директорию то же желательно прописать в системную переменную "PATH" и перезагрузить файл. Потом желательно создать отдельную директорию, поместить туда созданный в предыдущем параграфе файл ".cab" и создать командный файл, как описано ниже:

rem Создание сертификата и закрытого ключа.

makecert -sv PrivKey1.pvk Cert1.cer

rem Перегон одного типа сертификата в другой.

cert2spc Cert1.cer Cert1.spc

rem Подписание файла.

signcode -spc Cert1.spc -v PrivKey1.pvk twist.cab

 

Следует учесть, что перед запуском данной процедуры надо иметь файлы вашего секретного ключа (в моём примере он называется PrivKey1.pvk) и сертификата (в примере он называется Cert1.cer) полученные в соответствующей службе сертификации, так как здесь в первой строчке представлено получение тестового сертификата. Соответственно, если у вас есть эти файлы, то выполнение первой строчки не потребуется. В процессе своего исполнения он попросит вас несколько раз ввести пароль (введите одно и то же число), создаст новые файлы и кроме всего прочего, подпишет файл "twist.cab". Теперь этот файл можно положить на Веб-сервер для распространения в Интернет посредством вышеописанного ".html" файла. Теперь при загрузке этого ".html" файла на клиентский браузер в окне будет выдаваться предупреждение о проверке цифровой подписи апплета.

 

6)    Подписание апплета по технологии Netscape.

Эта технология немного отличается от Microsoft. Следует знать то, что в отличие от IE браузера, который при скачивании подписанного апплета будет выдавать вам на экран предупреждающее сообщение, Netscape браузер работает по другому. Модель безопасности Netscape построена на том принципе, что предупреждающее сообщение на экран будет выдаваться на экран только тогда, когда апплет при своём выполнении затребует какие-либо защищённые ресурсы клиентской машины, как-то доступ к диску, к памяти, к портам… Таким образом, если апплет подписан, но не требует эти ресурсы, пользователь и не распознает того факта, что апплет подписан (если не брать во внимание предупреждающий значок внизу окна браузера).

 

Подписание ".jar" файла.

Для подписания файла, как и в первом случае, нам надо иметь сертификат в виде Netscape CodeSigning Format. Для его получения на локальную ЭВМ необходимо установить Netscape Navigator и запустить его. Далее надо обратиться к его верхнему меню, выбрать там пункт "Communicator", затем в открывшемся меню выбрать пункт "Security Info". Нажав на ссылку "Yours" вы можете получить сертификат нужного формата с соответствующего центра сертификации. После выполнения этой процедуры нужный вам сертификат будет установлен в БД самого браузера и вы сможете им воспользоваться для своих нужд. Далее, для подписания файлов по технологии Netscape, вам ещё потребуется инструмент от того же Netscape. Его вы можете скачать здесь. Этот инструмент представляет собой один исполняемый модуль "signtool.exe" Если вы не хотите пока получать реальный сертификат, то есть возможность сгенерировать свой собственный тестовый сертификат. Для этого надо найти файлы "cert7.db" и "key3.db" (для Netscape Communicator v 4.05 и выше - NC), которые обычно при стандартной установке располагаются в поддиректории C:\Program Files\Netscape\Users\<имя пользователя, введённое при установке NC> и являются хранителями сертификатов. Если они там есть, и уже установлен "signtool.exe", к которому прописаны пути, то можно набрать команду следующего вида:

 

signtool -G <алиас> -d <путь к файлам – хранилищам сертификатов>

 

У меня это выглядело так:

 

signtool -G Serega

 

(это если рассматриваемые ранее два файла поместить в ту же директорию). Алиас это имя под которым генерируемый сертификат будет занесён в БД сертификатов. После выполнения данной команды в БД сертификатов NC будет занесён сгенерированный вами тестовый сертификат. Остальные опции смотрите в пояснениях к команде.

После этого (далее опишу как делал я) создаёте две директории. В одну кладёте файлы, которые должны попасть в  ".jar" файл, а из другой набираете команду, что-то типа:

 

signtool -b twist -k Serega -Z twist.jar -d D:\WORK\DIG_SIGN_NC\SIGN D:\WORK\DIG_SIGN_NC\RESULT

 

где опция –d указывает на расположение файлов-хранилищ сертификатов; -k указывает на алиас сертификата, используемого для подписания апплета, -Z указывает на имя получаемого файла, -b указывает на базовое имя для файлов подписи. Help по этим и другим опциям доступен через "signtool.exe -?". Вот и всё. В директории создаётся подписанный файл "twist.jar", который помещается в ту же директорию Веб-сервера, что и подписанный по технологии Microsoft ".cab" файл. Успехов!!!

         

11 июля 2001 года.

Напишите мне письмо

Полезная статейка

 

Апорт Top 1000

TopList

WebList.Ru

 









Если вам необходим почтовый аккаунт, тогда почта на Qip.ru - ваш выбор. Для хранения фото и видео рекомендуем бесплатный фотохостинг.
Для студентов и абитуриентов: крупнейшая библиотека рефератов и сочинений. Скриншот экрана - просто и удобно с QIP Shot.