Получение, установка и использование Code Signing сертификата для Sun Java
Получение Code Signing сертификата для Sun Java
Цифровая подпись файлов .jar и приложений Java для настольных и мобильных устройств
Работает при помощи систем Java Runtime Environment (JRE)
Чтобы использовать сертификат подписи DigiCert Code для Sun Java, выполните следующие действия.
Шаг 1: Загрузите инструмент для подписи
Загрузите комплект разработки программного обеспечения Java 2 (SDK).
Последняя версия доступна бесплатно для платформ Solaris SPARC / x86, Linux86 и Microsoft Windows на
http://java.sun.com/javase/downloads/index.jsp.
Вы необходимо использовать keytool, jar и jarsigner для подписи вашего кода при помощи Signing Digital ID
Шаг 2: Создание хранилища ключей>
Чтобы создать пару открытых / закрытых ключей, введите следующую команду, указав имя для хранилища ключей и псевдоним.
keytool -genkey -keyalg rsa -keystore <keystore_filename> -alias <alias_name> -keysize 2048
Это создаст контейнер хранилища ключей и закрытый ключ в хранилище ключей.
У частного ключа будет уникальный псевдоним, который чрезвычайно важен. Например, если используется команда:
keytool -genkey -keyalg rsa -keystore javakeystore1.jks -alias mykeystorealias -keysize 2048
Keystore: javakeystore1.jks
Private Key Alias: mykeystorealias
Keytool предложит ввести пароль для хранилища ключей, имени, организации и адреса.
Папка открытого / закрытого ключа, созданная keytool, сохраняется в хранилище ключей и будет использоваться для
подписи Java-апплетов и приложений. Этот ключ никогда не отправляется в DigiCert он нужен для подписи кода.
DigiCert рекомендует вам сделать копию пары «открытый / закрытый ключ» и сохранить ее в сейфе или в
другом безопасном месте. Если ключ утерян или украден, немедленно свяжитесь с DigiCert, чтобы сертификат был отозван.
Шаг 3: Генерация CSR
Для выпуска сертификата для подписи кода и приложений необходимо создать запрос на подпись сертификата (CSR).
Приведенная команда обращается к Keytool для создания CSR для пары ключей в хранилище ключей:
keytool -certreq -file certreq.csr -keystore <keystore_filename> -alias <alias_name>
Этот запрос на сертификат CSR будет содержать всю информацию, введенную при создании хранилища ключей
и привязан к закрытому ключу в хранилище ключей (например, -keystore javakeystore1.jks -alias mykeystorealias )
Создайте копию файла хранилища ключей. Наличие резервной копии хранилища ключей в этот момент
может помочь решить проблемы с установкой, которые могут возникнуть при импорте сертификата в
исходный файл хранилища ключей.
Установка Code Signing x.509 сертификата в хранилище сертификатов Sun Java
Шаг 1: Установка Code Signing Primary Intermediate CA и Secondary Intermediate CA сертификатов в keystore
- Загрузите Primary и Secondary Intermediate CA сертификаты
- Скопируйте Primary и Secondary промежуточные сертфикаты в два отдельных текстовых файла.
* Используйте блокнот или нотепад.
- Назовите файл Primary промежуточного сертификата CA primaryintca.cer
- Используйте такую команду для импорта этого сертификата в keystore:
keytool -import -trustcacerts -alias primaryintermediate -keystore keystore_name -file primaryintca.cer
- Для Secondary промежуточного сертификата CA используйте имя файла secondaryintca.cer
- Используйте такую команду для импорта этого сертификата в keystore:
keytool -import -trustcacerts -alias secondaryintermediate -keystore keystore_name -file secondaryintca.cer
Шаг 2: Установка вашего Sun Java сертификата в keystore
- Сохраните ваш сертфикат в тестовом формате и назовите фаил sunjava.cer
- Используйте такую команду для импорта этого сертификата в keystore:
keytool -import -trustcacerts -alias your_alias_name -keystore keystore_name -file sunjava.cer
Шаг 3: Просмотрите содержимое keystore Sun Java
- Введите следующую команду, чтобы отобразить содержимое хранилища ключей:
keytool -list -v -keystore your_keystore_filename > output_filename
- Просмотрите содержимое выходного файла. Длина цепи сертификата должна быть четыре, например:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 2 entries
Alias name: alias
Creation date: Jul 1, 2016
Entry type: PrivateKeyEntry
Certificate chain length: 3
- Проверьте следующую информацию:
Сертификат подписи кода для Sun Java импортируется в псевдонимом «типом ввода» PrivateKeyEntry или KeyEntry.
Если нет, пожалуйста, импортируйте сертификат в псевдоним Private Key.
Импорт Digital ID сертификата для подписи кода из хранилища
Цифровой идентификатор подписи кода - это «путь доверия» или «цепочка» к корневому сертификату DigiCert.
Этот «путь доверия» позволяет проверить ваш код на любом стандартном JRE без установки каких-либо дополнительных файлов.
Поскольку сертификат был выпущен по конкретному запросу CSR, который привязан к приватному ключу, он не может
использоваться для любого другого хранилища ключей. (например, сертификат можно установить только в -keystore javakeystore1.jks -alias mykeystorealias)
Обычно вы получаете сертификат в PEM формате, он выглядит так:
-----BEGIN CERTIFICATE-----
[encoded data]
-----END CERTIFICATE-----
*
Убедитесь, что у вас есть 5 тире по обе стороны от BEGIN CERTIFICATE и END CERTIFICATE,
и что не было добавлено лишнего пробела, дополнительных разрывов строк или дополнительных символов.
Чтобы импортировать свой сертификат подписи кода в PFX для Java Java ID в свое хранилище ключей,
введите следующий код с правильным именем для вашего файла сертификата (например, «cert.p7b»)
keytool -import -trustcacerts -keystore <keystore_filename> -alias <alias_name> -file cert.p7b
Если во время установки возникает ошибка:
«keytool error: java.lang.Exception: Input not an X.509 certificate» попробуйте сделать конвертацию при помощи
Windows конвертора сертификата
Bundle Applet для JAR File
Эта строка создает JAR-файл (C: \ TestApplet.jar). Файл JAR содержит все файлы под текущим каталогом и его подкаталогами.
jar cvf <filename>.jar <filename to bundle>
Например
jar cvf testapplet.jar file1.java file2.java
Jar ответит:
added manifest
adding: TestApplet.class (in = 94208) (out= 20103)(deflated 78%)
adding: TestHelper.class (in = 16384) (out= 779)(deflated 95%)
Подпись аплетов
Примечание:* Начиная с версии JDK 1.7, при запуске java-кода были добавлены дополнительные проверки.
Для их выполнения в файл манифеста необходимо добавить следующие атрибуты (MANIFEST.MF)
Пожалуйста, обратитесь к приведенной ниже ссылке для значений, которые будут установлены для этих атрибутов:
https://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/manifest.html
- Используйте jarsigner для подписания JAR-файла с помощью секретного ключа, сохраненного в хранилище ключей. .
jarsigner -keystore <keystore_filename> <path to Applet (ie. C:\TestApplet.jar)> <alias_name>
Чтобы добавить временную метку с URL-адресом временной привязки RFC 3161, команда указана как -tsa, как описано ниже
jarsigner -tsa http://timestamp.geotrust.com/tsa -keystore <keystore_filename> <path to Applet (ie. C:\TestApplet.jar)> <alias_name>
В командной строке введите пароль в хранилище ключей.
- Jarsigner хэширует ваш апплет или приложение и сохраняет хэш в JAR-файле, созданном на шаге 5, с копией вашего цифрового кода подписи кода.
- Проверьте вывод подписанного JAR-файла.
jarsigner -verify -verbose -certs d:\TestApplet.jar
Когда загружается подписанный файл JAR, среда выполнения Java будет отображать ваш цифровой идентификатор пользователю.
Если файл подделан каким-либо образом после его подписания, пользователь будет уведомлен и получит возможность отказаться от установки.
|