Створення і використання архівів java

Навіщо потрібні JAR-архіви?

Використання JAR-архівів надає розробникам аплетов (а також і автономних додатків) ряд переваг.

  • Підвищення ефективності завантаження. Замість кількох файлів окремих класів завантажується єдиний файл із розширенням JAR-архіву.
  • Покращене сховище файлів, так як файли класів зберігаються в одному стислому файлі архіву.
  • Підвищення захищеності. У JAR-файл можна помістити цифровий підпис, що дають кінцевому користувачеві гарантії, що файл архіву не змінився з моменту її внесення. Якщо кінцевий користувач довіряє вашій фірмі, він може надати підписаним вами аплетів право доступу до його жорстких дисків або іншим важливим ресурсам системи.
  • Незалежність від платформи. Побудова JAR-архівів базується на використанні популярної програми PKZIP стиснення файлів. Однак JAR-файли можуть створюватися і зберігатися на будь-якої комп'ютерної платформі.
  • Можливість розширення. У специфікацію JAR-файлів внесені деякі доповнення, що забезпечують можливість подальших розширень.

Одне тільки підвищення ефективності завантаження дає чим краще! Якщо ви знайомі з роботою протоколу HTTP, то повинні розуміти наскільки неефективно, з його допомогою, виконувати передачу кількох невеликих файлів. У кожному разі потрібно встановити нове з'єднання TCP / IP, яке після передачі даного файлу буде розірвано. Установка кожного з'єднання пов'язана з додатковим навантаженням на сервер і мережу. При використанні комутованих ліній зв'язку середній час установки TCP / IP-з'єднання може становити близько 0,5 c. Якщо для роботи аплета необхідно 16 файлів, загальний час витрачається тільки на установку з'єднань - 8 с.

Створення JAR-архіву

Для створення і модифікації JAR-архівів можна використовувати будь-яку підтримує формат PKZIP програму. JAR-файл відрізняється від zip-файлу наявністю додаткового текстового файлу, званого файлом опису (manifest file). Цей файл містить відомості про всі поміщених в даний архів файлах. До складу файлу опису повинні входити певні елементи, зокрема він повинен включати наступні.

  • Номер версії стандарту JAR. Відповідно, з яким побудований даний архів. Цей номер задається параметром Manifest-Version і є обов'язковим. У SDK 1.2 значення цього параметра має дорівнювати 1.0
  • Мінімальний номер версії утиліти JAR, яка зможе прочитати цей архів. Цей параметр необов'язковий і має назву Required-Version.
  • Окрема запис для будь-якого, поміщеного в архів файлу. Необов'язково перераховувати всі поміщені в архів файли, досить вказати тільки файли головних класів.

Фірма Sun надала, для створення JAR архівів, спеціалізований інструмент для всіх підтримуваних платформ. Розглянемо створення JAR-архіву за допомогою цієї утиліти під назвою jar.

Припустимо, що у нас є каталог, що містить кілька файлів типу .class і підкаталог з ім'ям images містить кілька файлів типу .gif. Нехай ім'я створюваного архіву буде archive.jar

Загальний формат команди виклику утиліти jar: jar параметри імена_файлов

Параметр імена_файлов є список імен файлів, першим в якому завжди вказується ім'я самого архівного файлу. Призначення інших імен файлів залежить від ключів:

І так для створення нового архіву введіть:
jar cf archive.jar .class images / .gif

Приміщення в JAR-архів цифрового підпису

Для того щоб розібратися, як цифровий підпис поміщається в JAR-архів, необхідно попередньо засвоїти певні базові поняття в галузі криптографії -шифрування за допомогою відкритого ключа.

Для внесення цифрового підпису в JAR-архів необхідно мати два інструменти.

  • Утиліта keytool. Використовується для генерації пари відкритого і закритого ключа і сертифіката.
  • Утиліта jarsigner. Використовується для безпосереднього приміщення цифрового підпису в JAR-архіви з застосуванням наявного сертифіката.

Що нам знадобиться:

  1. Виконати генерацію пари ключів.
  2. Отримати сертифікат на цю пару.
  3. Використовувати сертифікат для приміщення цифрового підпису в JAR-архів.

Генерація пари ключів

Для генерації нової пари ключів можна використовувати наступну команду:
keytool -genkey -alias testkey

В результаті виконання цієї команди буде створена нова пара ключів збережена в базі даних під ім'ям testkey. Ось що у нас вийде:

Програма keytool дозволяє вказувати наступні параметри:

-v - запит виведення повідомлень про дії програми. -alias псевдонім - псевдонім (ім'я) який присвоюється цій парі. -keyalg алгорітм_ключа - алгоритм шифрування вашого підпису - зазвичай за умовчанням це алгоритм SHA1 with DSA і його можна не вказувати якщо не збираєтеся змінювати його, розмір ключа при генерації DSA ключової пари може бути від 512 до 1024 біт, але якщо ви хочете застосувати MD5 with RSA то вкажіть опцію -keyalg «RSA» Слід зауважити що опція -keyalg обумовлює і опцію -sigalg - алгоритм підпису який буде використаний за замовчуванням для підписання jar-файлу (при створенні дайджестів повідомлень). -keysize дліна_ключа - розмір генеруються ключів в бітах. -keypass пароль - пароль для даного ключа. Якщо пароль не буде зазначений в командному рядку, програма запропонує ввести його значення в режимі діалогу. Довжина пароля повинна бути не менше шести символів. -keystore сховище - розташування сховища ключів. -storepass пароль - пароль доступу до сховища ключів. -validity valDays - термін придатності вашого сертифіката. За замовчуванням це 180 днів, можна вказати більше або менше.

За замовчуванням утиліта keytool поміщає відкритий ключ до підписаного вами ж сертифікат X.509.v1.

Командою keytool -list ми можемо подивитися вміст keystore:

отримання сертифікату

Після генерації нової пари ключів необхідно виконати генерацію запиту CSR (Certificate Signing Request). Цей запит відсилається в будь-яку обрану службу сертифікації.

Для генерації CSR запиту введіть наступну команду:
keytool -certreq

Для нашої пари ключів testkey команда буде виглядати наступним чином:
keytool -certreq -alias testkey

При генерації CSR запиту допускаються наступні параметри:

-v - супровід роботи програми видачею повідомлень. -alias псевдонім - визначення псевдоніма пари ключів, для яких необхідно отримати сертифікат. За замовчуванням застосовується значення mekey. -sigalg алгорітм_сігнатури - завдання використовуваного алгоритму внесення підпису. -file csr_файл - ім'я та розташування файлу, в якому поміщається генерується запит. -keypass пароль - пароль для доступу до даного ключа. -storepass пароль - пароль доступу до сховища ключів. -keystore сховище - ім'я та розташування файлу з парою ключів.

Згенерований CSR-запит надсилається до обрану службу сертифікації. Після проведення всіх необхідних перевірок і посвідчення вашої особи вам буде виданий до сертифіката.

У будь-якому випадку самостійно занесіть отриманий сертифікат в файл і введіть наступну команду:
keytool -import

Наступні параметри можуть бути вказані в режимі import:

-v - супровід роботи програми видачею повідомлень. -alias псевдонім - псевдонім повного імені, яке буде використовуватися з даними сертифікатом. -file файл-сертифікату - ім'я та розташування файлу, в якому збережений отриманий сертифікат.

команда:
keytool -export -alias testkey -file имя_файла
дасть вказівку утиліті скопіювати ваш сертифікат в зазначений файл. Надішліть свій сертифікат всім одержувачам, які будуть використовувати підписані вами JAR-архіву.

Приміщення в JAR-архів цифрового підпису за допомогою утиліти jarsigner

Крім приміщення цифрового підпису в JAR-архіви утиліта jarsigner здатна також перевіряти цілісність підписаних JAR-архівів. Для цього достатньо запустити її з параметром -verify /

При введенні команди:
jarsigner myJarFile.jar
Тіліт скористається сховищем ключів за замовчуванням і результат буде поміщений в файл myJarFile.jar, який буде замість вихідний файл архіву.

Для створення JAR-архіву підписаного нашими ключами testkey введіть наступну команду:
jarsigner myJarFile.jar testkey

Для того щоб файл myJarFile.jar залишився незміненим а результат записався, наприклад, в файл mySignedJarFile.jar введіть команду:
jarsigner -signedjar mySignedJarFile.jar myJarFile.jar testkey.

Читайте інші цікаві статті

  • Створення і використання архівів java
    Додаємо Eclipse і Netbeans на панель запуску Ubuntu 12.10
  • Створення і використання архівів java
    Робота з Java в командному рядку
  • Створення і використання архівів java
    Управління Java classpath (UNIX і Mac OS X)
  • Створення і використання архівів java
    Install Alfresco Community 4.2 on Ubuntu 12.04 (Fixed)
  • Створення і використання архівів java
    Установка Android SDK, Java SDK, Android Studio в Ubuntu
  • Створення і використання архівів java
    Установка Oracle Java в Ubuntu
  • Створення і використання архівів java
    Підключення реальних android-пристроїв в Eclipse
  • Створення і використання архівів java
    Установка Eclipse і Android SDK в Ubuntu
  • Створення і використання архівів java
    Установка Alfresco на стабільну Ubuntu 12.04
  • Створення і використання архівів java
    Оптимізація Eclipse IDE під інтерфейс Ubuntu

Схожі статті