- •Аннотация
- •Содержание
- •Введение
- •1. Апплет с эффектом анимации на основе многопоточности Java и обращением к локальной файловой системе
- •2.Создание подписанного апплета .
- •2.1. Создание архивного jar-файла
- •2.2. Создание пары ключей и сертификата в хранилище ключей
- •2.3. Подписывание jar-файла цифровой подписью
- •2.4. Задание политики безопасности для подписанного апплета
- •3. Выполнение подписанного апплета
- •Список использованных источников
2.Создание подписанного апплета .
2.1. Создание архивного jar-файла
В результате компиляции исходного кода апплета был создан набор файлов .class соответствующих классов апплета.
Создание архивного JAR-файла осуществлялось с помощью утилиты jar, входящей в JDK, следующим образом:
jar cfv draw.jar Draw*.class
При упаковке использовался набор опций «cfv». Опции «cf» позволяют создать новый Jar архив. Опция «v» выводит в консоль подробную информацию о процессе упаковки.
В результате выполнения команды, указанной выше, был создан файл draw.jar.
При этом утилита jar создает файл описания архива MANIFEST.MF в каталоге META-INF архива.
Manifest-Version: 1.0
Created-By: 1.6.0_22 (Sun Microsystems Inc.)
Name: Draw.class
SHA1-Digest: EBnjaMiuKzLw5WiF/UAbm8F39mM=
Name: Draw$6.class
SHA1-Digest: Sh7ajg1656yIhXAVGM+iMRPnQDs=
Name: Draw$4.class
SHA1-Digest: cXJ5Ict4gtpI1Y/6ReGDh9ZnFp0=
Name: Draw$3.class
SHA1-Digest: VLuv5OcuU06aZIOGOkt3YIWQaxM=
Name: Draw$2.class
SHA1-Digest: TIcoCCVDuTyjIgQPor+WjCUIkic=
Name: Draw$1.class
SHA1-Digest: y2M69LZdgGyry5RIqWngvIGl09k=
Name: Draw$7.class
SHA1-Digest: 38fm/3daBpVKn2jAkpt0flonSLk=
Name: Draw$5.class
SHA1-Digest: /URKtd7LTlH0ugHkImqe7pbYoFA=
2.2. Создание пары ключей и сертификата в хранилище ключей
Далее с помощью утилиты keytool создаётся пара ключей («открытый/закрытый») и сертификат по стандарту X.509 для псевдонима «lubimova_bts909» в хранилище ключей lubimovakeystore в текущем каталоге.
Для создания самоподписанного сертификата применилась команда:
keytool -genkey -alias "lubimova_bts909" -keystore lubimovakeystore
где:
-genkey – параметр указывающий, что утилита keytool должна сгенерировать ключи
alias "lubimova_bts909" – псевдоним, под которым в хранилище ключей размещается сертификат
-keystore lubimovakeystore – название хранилища ключей.
Также по требованиям утилиты, был введён пароль защиты хранилища ключей, информация о владельце сертификата и пароль защиты закрытого ключа.
2.3. Подписывание jar-файла цифровой подписью
Архивный JAR-файл подписывается с помощью утилиты jarsigner. используя следующую команду:
jarsigner -keystore lubimovakeystore draw.jar "lubimova_bts909"
Утилита требует ввести пароль хранилища ключей и пароль закрытого ключа после чего модифицирует файл описания архива MANIFEST.MF в каталоге META-INF архива.
В него добавляются записи для каждого файла класса, входящего в архив. Запись файла класса включает имя и дайджест файла.
Также в каталог META-INF архива добавляется файл подписи LUBIMOVA.SF.
Содержимое файла подписи LUBIMOVA.SF:
Signature-Version: 1.0
SHA1-Digest-Manifest-Main-Attributes: zasvPbp2Pj22IZ986L4058c4i8Y=
Created-By: 1.6.0_22 (Sun Microsystems Inc.)
SHA1-Digest-Manifest: ImEfOYzMILmHkKKCviBxm0fsyDU=
Name: Draw$6.class
SHA1-Digest: vGqzLEH/KbnacjDtQiSDXKICJa4=
Name: Draw.class
SHA1-Digest: uBc73pDabRJm+oicwf+mhIiy5qw=
Name: Draw$4.class
SHA1-Digest: C2C+XUP+HE5T673xNHoIQCKX2jE=
Name: Draw$3.class
SHA1-Digest: gRIazdXuUfqouDlcXHXjUYYSn9I=
Name: Draw$2.class
SHA1-Digest: 2BU7L5XPQrkOMeunvNJ5wL4raxE=
Name: Draw$1.class
SHA1-Digest: wZwghCWaQOGzLN/4T+KddE4G0To=
Name: Draw$7.class
SHA1-Digest: jC+t48UG1rlZ+YVEA6rlSXAe1Ew=
Name: Draw$5.class
SHA1-Digest: 4jIxKoFfAJGZCsyYu4j4+VzBMmU=
Файл подписи идентифицирует каждый из файлов в архиве, алгоритм дайджеста содержит для каждого файла значение дайджеста, вычисленного из записи файла в файле описания MANIFEST.MF.
На заключительном этапе подписания в каталог META-INF файла архива добавляется двоичный файл подписи LUBIMOVA.DSA. Этот файл содержит подпись файла подписи LUBIMOVA.SF и сертификат, заверяющий подлинность открытого ключа, соответствующего закрытому ключу, использованному при создании подписи.
