Frequently Asked Questions

Other Languages: Dansk Deutsch Ελληνικά English Español Suomi Français Italiano Bokmål Nederlands Polski Português - Brasil Português - Portugal Svenska Türkçe Українська Chinese Taiwan Chinese

Подпись кода Java: Создание CSR

Print this Article
Last Updated: February 2, 2015 12:57 PM

Начиная с января 2014 г. все приложения Java, запускаемые в веб-браузерах, требуют сертификатов подписи кода. После приобретения сертификата подписи кода вы должны подписать ваш код Java.

Для упаковки и подписи кода Java требуются различные утилиты, включая keytool, jar и jarsigner. Начиная с JDK 5.0 утилита jarsigner может генерировать подписи, содержащие отметку времени, что позволяет удостоверять, что файл JAR был подписан в период действия сертификата подписи кода.

1-й подход — запросите новый сертификат подписи кода

  1. При необходимости загрузите JDK по следующей ссылке:
    http://java.sun.com/javase/downloads/index.jsp
  2. Запросите сертификат подписи кода у Starfield Technologies.
    • Создайте новое хранилище ключей. Хранилище ключей — это место, в котором хранятся сертификаты. В данном примере создается хранилище ключей «codesignstore», в котором будут содержаться только сертификат подписи кода и соответствующий закрытый ключ.
      keytool -genkey -alias codesigncert -keypass -keyalg RSA -keysize 2048 -dname "CN=displayname,O=companyname,C=US,ST=state,L=city" -keystore codesignstore -storepass
    • Создайте запрос на подпись сертификата (CSR). Закрытый ключ будет создан и сохранен в хранилище ключей «codesignstore». В текущем рабочем каталоге будет создан файл CSR «mycsr.pem».
      keytool -certreq -v -alias codesigncert -file mycsr.pem -keystore codesignstore
    • Купите сертификат подписи кода.
    • Щелкните кредит приобретенного сертификата подписи кода в разделе «Мой аккаунт». Будет открыто веб-приложение Starfield «Управление аккаунтами услуг сертификатов». Чтобы поле CSR отображалось, на форме запроса следует выбрать ручной метод создания CSR.
    • Отправьте CSR в составе запроса на подпись кода.
      • Откройте файл «mycsr.pem» в редакторе, скопируйте все его содержимое (включая строки BEGIN NEW CERTIFICATE REQUEST и END NEW CERTIFICATE REQUEST) и вставьте его в соответствующий раздел формы запроса на подпись кода.
    • Указанная вами информация о компании будет проверена. При необходимости центр регистрации (RA) может обратиться к вам за дополнительной информацией.
    • После создания сертификата подписи кода вы получите письмо со ссылкой для загрузки файла сертификата и сопутствующих промежуточных сертификатов.
  3. Установите сертификат подписи кода в созданное ранее хранилище ключей. В следующем примере используется файл сертификата подписи кода «mycert.cer». Файл сертификата должен находиться в текущей рабочей папке и иметь формат PKCS#7.
    keytool -import -trustcacerts -keystore codesignstore -storepass -alias codesigncert -file mycert.cer
  4. Подпишите файл JAR с помощью jarsigner, указав сертификат подписи кода и закрытый ключ
    jarsigner -verbose -keystore codesignstore -storepass -keypass myapp.jar codesigncert
    • Здесь «codesignstore» — псевдоним хранилища ключей, в котором содержатся сертификат подписи кода, закрытый ключ и все прочие сертификаты в цепочке.
    • Имя неподписанного входного файла, «myapp.jar», будет заменено подписанной версией файла. Если требуется указать разные имена входного и выходного файлов, используйте переключатель командной строки «-signedjar».
    • «codesigncert» — псевдоним закрытого ключа в хранилище ключей.
    В следующем примере к представленному выше примеру добавлены параметры меток времени.
    jarsigner -verbose -keystore codesignstore -storepass -keypass -tsa http://tsa.starfieldtech.com/ myapp.jar codesigncert
  5. Проверьте подписанный файл JAR
    jarsigner -verify -verbose -certs myapp.jar
  6. Распространите код

2-й подход — используйте существующий файл PKCS#12, который содержит сертификат подписи кода и закрытый ключ

  1. При необходимости загрузите JDK по следующей ссылке:
    http://java.sun.com/javase/downloads/index.jsp
  2. Убедитесь, что файл PFX/P12 можно использовать с jarsigner. Выполните следующую команду; псевдоним, требуемый на этапе 5, будет отображен в начале выходного листинга:
    keytool -list -storetype pkcs12 -keystore mycert.pfx -v
  3. Создайте файл JAR из файлов классов Java с помощью утилиты jar:
    jar cvf myapp.jar myapp.class
  4. Подпишите файл JAR с помощью jarsigner, указав сертификат подписи кода и закрытый ключ:
    jarsigner -storetype pkcs12 -keystore mycert.pfx myapp.jar "aliasname"
    • «mycert.pfx» — полный путь к файлу PFX/P12, содержащему сертификат подписи кода и закрытый ключ. Этот файл также должен содержать все промежуточные сертификаты.
    • «aliasname» отображается в выходном листинге этапа 2, около начала. Если файл PFX/P12 был экспортирован из Windows, то aliasname, скорее всего, будет идентификатором GUID.
    • Когда будет предложено, введите пароль, связанный с закрытым ключом в файле PFX/P12. Также можно задать переключатель «-storepass», чтобы указать пароль в командной строке.
    • Имя неподписанного входного файла, «myapp.jar», будет заменено подписанной версией файла. Если требуется указать разные имена входного и выходного файлов, используйте переключатель командной строки «-signedjar».
    В следующем примере к представленному выше примеру добавлены параметры меток времени:
    jarsigner -storetype pkcs12 -keystore mycert.pfx -tsa http://tsa.starfieldtech.com/ myapp.jar "aliasname"
  5. Проверьте подписанный файл JAR
    jarsigner -verify -verbose -certs myapp.jar
  6. Распространите код

Ссылки