Это руководство поможет вам начать подписывать код Java с помощью О.В. / И.В. or EV сертификат подписи кода от SSL.com. В этих инструкциях предполагается, что на вашем компьютере установлен Java Development Kit (JDK) и что keytool
и jarsigner
команды включены в ваш PATH. В инструкциях по подписанию кода Yubikey предполагается, что ваш сертификат установлен в слоте 9a ЮбиКей ФИПС токен, поскольку они отправлены SSL.com.
Если у вас еще нет сертификата подписи кода и вы не уверены, какой тип вам нужен, прочтите этот FAQ.
Подписание кода OV/IV (только для сертификатов OV/IV, выпущенных до 1 июня 2023 г.)
Конфигурация
Метод 1: генерировать CSR и PFX файл в браузере
Самый простой способ быстро начать работу с подписью Java-кода - создать CSR и файл PFX при получении сертификата с SSL.com и установке его в новом хранилище ключей Java.
.jar
файлы непосредственно с неконвертированным файлом PFX, добавив -storetype pkcs12
флаг к jarsigner
команда.- Следуйте инструкциям, приведенным в Заказ и получение сертификатов подписи кода заказать ваш сертификат и скачать файл PFX с вашим сертификатом и личным ключом.
- Импортируйте PFX в новое хранилище ключей с тем же паролем, используя приведенную ниже команду. (Заменить
MY-CERTIFICATE.p12
иMY-KEYSTORE.jks
с фактическим именем вашего файла PFX и именем файла, который вы хотите дать вашему хранилищу ключей. Обратите внимание, чтоdestalias
произвольно, и вы можете использовать другое значение псевдонима, если хотите.)keytool -importkeystore -srckeystore MY-PFX.p12 -srcstoretype pkcs12 -srcalias 1 -destkeystore MY-KEYSTORE.jks -deststoretype JKS -destalias codeigning
Примечание: Значение для-srcalias
для файла PFX, загруженного с SSL.com, обычно следует1
, но вы можете подтвердить это, выполнив командуkeytool -list -v -storetype pkcs12 -keystore MY-PFX.P12
и проверка значения, указанного дляAlias name
. - Вам будет предложено ввести пароль для хранилища ключей назначения, а затем пароль исходного хранилища ключей (пароль, который вы ввели при создании PFX). Вы также можете увидеть предупреждение, начинающееся с
Warning: The JKS keystore uses a proprietary format
, Вы можете смело игнорировать это сообщение.
Метод 2: Генерация пары ключей и CSR с Java
Если вы предпочитаете создать свою пару ключей и CSR с Java, следуйте инструкциям в этом разделе. Процесс тот же, который используется для создания CSR для SSL /TLS сертификат на Яве.
Создать Keystore и пару ключей
- Сначала мы создадим хранилище ключей и пару открытого / закрытого ключей. Java использует файлы с расширением
.jks
(Java KeyStore) для хранения сертификатов и криптографических ключей. Введите следующую команду, чтобы сгенерировать хранилище ключей и 3072-битную пару ключей RSA. (ЗаменитьMY-KEYSTORE.jks
с именем, которое вы хотели бы иметь файл.)keytool -genkeypair -alias codeigning -keyalg RSA -keysize 3072 -keystore MY-KEYSTORE.jks
- Вам будет представлен ряд подсказок. Сначала создайте и подтвердите пароль для хранилища ключей, затем введите и проверьте запрашиваемую информацию. (Замените значения, указанные в заглавных буквах, своей информацией.)
Введите пароль хранилища ключей: Введите новый пароль еще раз: Ваше имя и фамилия? [Неизвестно]: ИМЯ ФАМИЛИЯ Как называется ваша организация? [Неизвестно]: КОМПАНИЯ Как называется ваш город или местность? [Неизвестно]: ГОРОД Как называется ваш штат или провинция? [Неизвестно]: STATE Какой двухбуквенный код страны у этого аппарата? [Неизвестно]: US Верно ли CN=FIRSTNAME LASTNAME, OU=DEPARTMENT, O=COMPANY, L=CITY, ST=STATE, C=US? [нет да
- Файл хранилища ключей создан, и вы готовы создать CSR.
Порождать CSR
- Введите следующую команду, чтобы сгенерировать CSR из хранилища ключей мы только что создали. (Заменить
MY-KEYSTORE.jks
со значением, которое вы использовали при создании хранилища ключей иMY-CSR.csr
с именем, которое вы хотите использовать для CSR.)keytool -certreq -alias codeigning -file MY-CSR.csr -keystore МОЙ-KEYSTORE.jks
- Введите пароль, который вы создали при создании хранилища ключей.
Введите пароль хранилища ключей:
- Ассоциация CSR был создан. Если вы готовы заказать сертификат на SSL.com, откройте файл в текстовом редакторе, чтобы скопировать и вставить в CSR поле при заказе. Содержимое файла будет выглядеть примерно так, как показано ниже:
-----BEGIN NEW CERTIFICATE REQUEST----- MIIC5TCCAc0CAQAwcDELMAkGA1UEBhMCVVMxDjAMBgNVBAgTBVNUQVRFMQ0wCwYD VQQHEwRDSVRZMRAwDgYDVQQKEwdDT01QQU5ZMRMwEQYDVQQLEwpERVBBUlRNRU5U MRswGQYDVQQDExJGSVJTVE5BTUUgTEFTVE5BTUUwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQCrRyk8VLs1THls+vfz0YtMJ3qYYl4c5c499d1YSbfQHa6L kIYhKTxvgdtbD+ePDigKB40CpeuMp5Yu8R6g2YIVBpGMrejAZYAmrzs6tfjpelh0 ocSDwYr7H8qQ9jq6MfZTu6J7EjS5RMODB6MVq1usKg3H866xbi6lqAtcktEF+zlM 4FW9Tm3H/DW2G7EnTjlMPzgaXNIU7lLar7YAWPJgv83NV8lQNCDW4lFlZLWBU95r YkJ4gfWUFUyPc+AiGbsyDdrVjPvF5yaebnFDrwheFaWeTTigSfLY688G7bpA8VvE lKioCl8nlJlc9HOBNKKdhs4qEtF0BwSE8tOgbkWPAgMBAAGgMDAuBgkqhkiG9w0B CQ4xITAfMB0GA1UdDgQWBBTmVpJp824krUaJKrQNhsSbVjJA1jANBgkqhkiG9w0B AQsFAAOCAQEALlux89RkXyHN4PQqQHbShSeTTWLURII+F+OSK9N1RS5l8V7AMcRM wvOkPP7JBRCKiaFGTW+5vcLQNnWRqQZMe0I4E0jzhL2gGsdChPIJy9Jwgn3Rzxmw 8V0lBY1SHQ9LKgSK0jIer3PQhXHDJlE2g2Dx8nJ4WJk7l2OTF9Kkly9hg8MOQdeg VIcs3HLsVI9Cwd6UHRT6ruKL3+bRgEcb6qj+qcrKHkzN7KXbOEznd10nAm87wENS mTb012ZFMlpUDvPNAHQgoGJ6slA+pIoH1fvrkosjql7R/H7Q+onm37Qa6d9L2ZqM MhgNpNWVwI0UBU4Xy4p9oUCJnvHhQ7U+3w== -----END NEW CERTIFICATE REQUEST-----
Заказ и получение сертификата
- Следуйте инструкциям, приведенным в Заказ и получение сертификатов подписи кода через шаг 24. Вместо того, чтобы сразу нажать на Создать сертификат кнопку, установите флажок У меня есть своя CSR.
- Вставьте свой CSR в поле формы и нажмите Создать сертификат .
- Нажмите Скачать и сохраните
.crt
файл в том же месте, где вы создали хранилище ключей.
Импортировать сертификат в хранилище ключей
- Используйте следующую команду для импорта сертификата в файл хранилища ключей Java. (Замените MY-CERTIFICATE.crt и MY-KEYSTORE.jks фактическими именами файлов.)
keytool -importcert -file MY-CERTIFICATE.crt -keystore MY-KEYSTORE.jks -trustcacerts -alias codeigning
- Введите пароль хранилища ключей при появлении запроса.
Введите пароль хранилища ключей:
- Ваш сертификат установлен в хранилище ключей, и вы готовы начать подписывать файлы.
Ответ сертификата был установлен в хранилище ключей
Подписывать файлы с Jarsigner
- Используйте следующую команду, чтобы добавить цифровую подпись с меткой времени в
.jar
файл. (Заменить/PATH/TO/MY-KEYSTORE.jks
иMY-JAR.jar
с фактическими именами файлов, которые вы используете. Если вы использовали другой псевдоним при настройке хранилища ключей, замените его наcodesigning
в команде.)jarsigner -tsa http://ts.ssl.com -keystore MY-KEYSTORE.jks Кодовое подписание MY-JAR.jar
Примечание: также можно подписать.jar
файлы непосредственно с неконвертированным файлом PFX, добавив-storetype pkcs12
флаг кjarsigner
команда.
Примечание: По умолчанию SSL.com поддерживает метки времени из ключей ECDSA.
Если вы столкнулись с этой ошибкой:The timestamp certificate does not meet a minimum public key length requirement
, вам следует обратиться к поставщику программного обеспечения, чтобы разрешить временные метки из ключей ECDSA.
Если ваш поставщик программного обеспечения не может разрешить использование обычной конечной точки, вы можете использовать эту устаревшую конечную точку.http://ts.ssl.com/legacy
чтобы получить временную метку из модуля временных меток RSA. - Введите пароль хранилища ключей в командной строке.
Введите кодовую фразу для хранилища ключей:
- Файл теперь подписан. Вы можете проверить подпись с помощью следующей команды:
jarsigner -verify -verbose MY-JAR.jar
- Если ваш файл был успешно подписан, вывод команды должен содержать следующую строку:
s = подпись проверена
Подписание кода IV, OV и EV с помощью YubiKey
Конфигурация
Установите драйвер PKCS # 11 и создайте файл eToken.cfg
Windows
- Установите OpenSC, следуя инструкциям в OpenSC Быстрый запуск Windows.
- Найдите драйвер OpenSC PKCS # 11. Местоположение установки по умолчанию
C:\Program Files\OpenSC Project\OpenSC\pkcs11\opensc-pkcs11.dll
. - Создайте файл конфигурации и сохраните его в удобном месте (например, в своем домашнем каталоге). Имя файла произвольно, но в этом руководстве мы будем использовать
yubikey-pkcs11-java.cfg
, Файл должен содержать следующую информацию:name = OpenSC-PKCS11 description = SunPKCS11 через библиотеку OpenSC = C: \ Program Files \ OpenSC Project \ OpenSC \ pkcs11 \ opensc-pkcs11.dll slotListIndex = 0
MacOS
- Установите OpenSC, Если вы используете Homebrew в качестве менеджера пакетов вы можете установить OpenSC с помощью следующей команды:
варить установить opensc
- Найдите драйвер OpenSC PKCS # 11. Если вы установили с помощью Homebrew, файл должен быть доступен по адресу
/usr/local/lib/opensc-pkcs11.so
. - Создайте файл конфигурации и сохраните его в удобном месте (например, в своем домашнем каталоге). Имя файла произвольно, но в этом руководстве мы будем использовать
yubikey-pkcs11-java.cfg
, Файл должен содержать следующую информацию:name = OpenSC-PKCS11 description = SunPKCS11 через библиотеку OpenSC = /usr/local/lib/opensc-pkcs11.so slotListIndex = 0
Подписывать файлы с Jarsigner
- Используйте следующую команду, чтобы добавить цифровую подпись с меткой времени в
.jar
файл. (ЗаменитьMY-JAR.jar
с реальным именем файла, которое вы используете.)jarsigner -tsa http://ts.ssl.com -providerClass sun.security.pkcs11.SunPKCS11 -providerArg yubikey-pkcs11-java.cfg -keystore NONE -storetype PKCS11 MY-JAR.jar "Сертификат для аутентификации PIV"
- Введите свой PIN-код YubiKey в командной строке пароля.
Введите кодовую фразу для хранилища ключей:
- Файл теперь подписан. Вы можете проверить подпись с помощью следующей команды:
jarsigner -verify -verbose MY-JAR.jar
- Если ваш файл был успешно подписан, вывод команды должен содержать следующую строку:
s = подпись проверена