Подпись кода 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-й подход — запросите новый сертификат подписи кода
- При необходимости загрузите JDK по следующей ссылке:
http://java.sun.com/javase/downloads/index.jsp - Запросите сертификат подписи кода у 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) может обратиться к вам за дополнительной информацией.
- После создания сертификата подписи кода вы получите письмо со ссылкой для загрузки файла сертификата и сопутствующих промежуточных сертификатов.
- Создайте новое хранилище ключей. Хранилище ключей — это место, в котором хранятся сертификаты. В данном примере создается хранилище ключей «codesignstore», в котором будут содержаться только сертификат подписи кода и соответствующий закрытый ключ.
- Установите сертификат подписи кода в созданное ранее хранилище ключей. В следующем примере используется файл сертификата подписи кода «mycert.cer». Файл сертификата должен находиться в текущей рабочей папке и иметь формат PKCS#7.
keytool -import -trustcacerts -keystore codesignstore -storepass
-alias codesigncert -file mycert.cer - Подпишите файл 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 - Проверьте подписанный файл JAR
jarsigner -verify -verbose -certs myapp.jar
- Распространите код
2-й подход — используйте существующий файл PKCS#12, который содержит сертификат подписи кода и закрытый ключ
- При необходимости загрузите JDK по следующей ссылке:
http://java.sun.com/javase/downloads/index.jsp - Убедитесь, что файл PFX/P12 можно использовать с jarsigner. Выполните следующую команду; псевдоним, требуемый на этапе 5, будет отображен в начале выходного листинга:
keytool -list -storetype pkcs12 -keystore mycert.pfx -v
- Создайте файл JAR из файлов классов Java с помощью утилиты jar:
jar cvf myapp.jar myapp.class
- Подпишите файл 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" - Проверьте подписанный файл JAR
jarsigner -verify -verbose -certs myapp.jar
- Распространите код
Ссылки