Вопрос

Простой вопрос с довольно сложным ответом:

Как подписать Java-мидлет, чтобы можно было загружать его на мобильный телефон с меньшим количеством запросов безопасности?

Это было полезно?

Решение

Получите необходимое программное обеспечение

  1. Java SDK (JDK) От Солнце (у вас это уже должно быть)
  2. Беспроводной инструментарий Java (ВТК) также из Солнце
  3. При необходимости получите и установите Муравей и Антенна чтобы позволить вам автоматизировать вашу сборку (я бы настоятельно рекомендовал это)

Импортируйте существующий сертификат (если он у вас есть)

  1. Если вы приобрели сертификат у Verisign (или другого поставщика), вам необходимо импортировать сертификат в ваше хранилище ключей J2SE.
  2. Попробуйте использовать следующую команду keytool -import -alias {myalias} -file {mycertificate} (Я не смог протестировать это, так как у меня нет соответствующего сертификата)
  3. Беги keytool -list чтобы увидеть ваш новый сертификат
  4. Затем вы должны экспортировать сертификат, чтобы вы могли импортировать его на свой телефон
  5. Беги keytool -export -alias {myalias} -file mycertificate.crt
  6. Импортируйте сертификат в свой телефон (подробности см. Ниже).

Создайте и импортируйте новый (тестовый) сертификат

  1. Вам нужно использовать ключевой инструмент (из JDK)
  2. Я использовал следующую команду keytool -genkey -alias {myalias} -keyalg RSA -validity 365
  3. Вам будет предложено ввести пароль хранилища ключей, введите свой пароль хранилища ключей (если у вас есть существующее хранилище ключей) или тот, который вы хотите использовать, если у вас его еще нет
  4. Заполните все запросы о местоположении / названии компании и т.д.
  5. Беги keytool -list чтобы увидеть ваш новый сертификат
  6. Затем вы должны экспортировать сертификат, чтобы вы могли импортировать его на свой телефон
  7. Беги keytool -export -alias {myalias} -file mycertificate.crt
  8. Импортируйте сертификат в свой телефон (подробности см. Ниже).
C:\j2sdk1.4.2_08\bin>keytool -genkey -alias company -keyalg RSA -validity 365
Enter keystore password: password
What is your first and last name? [Unknown]: My Name
What is the name of your organizational unit? [Unknown]: company
What is the name of your organization? [Unknown]: company
What is the name of your City or Locality? [Unknown]: location
What is the name of your State or Province? [Unknown]: location2
What is the two-letter country code for this unit? [Unknown]: GB
Is CN=My Name, OU=company, O=company, L=location, ST=location2, C=GB correct? [no]: yes
Enter key password for (RETURN if same as keystore password):

Создайте и упакуйте приложение

  1. Использование javac для создания вашего мидлета обратите особое внимание на ваши параметры classpath и bootclasspath (в противном случае предварительная проверка завершится неудачей).Я также установил target равным 1.1, а source - равным 1.3
  2. Создайте свой JAD-файл критическими атрибутами в JAD являются URL-адрес MIDlet-Jar, Размер MIDlet-Jar, разрешения MIDlet мы также включили значок MIDlet, конфигурацию MicroEdition, профиль MicroEdition, название MIDlet, MIDlet-Push-1, значок MIDlet, описание MIDlet и версию MIDlet
  3. Сгенерируйте файл MANIFEST.MF на основе вашего JAD, вы должны удалить MIDlet-Jar-Size и MIDlet-Jar-URL
  4. Обе эти задачи могут быть выполнены с помощью задачи wtkJad Antenna
  5. Упакуйте и предварительно проверьте приложение с помощью задачи wtkPackage Antenna вы должны правильно установить свойства classpath и bootclasspath в противном случае предварительная проверка завершится неудачей

Подпишите заявление

  1. Подпишите приложение с помощью jarsigner
  2. Беги jarsigner -keystore {mykeystore} -storepass (mypassword} {myjar} {myalias}
  3. Теперь у вас есть подписанный jar, вам нужно обновить MIDlet-Jar-Size в твоем ДЖАДЕ
  4. Теперь добавьте сертификат в JAD, используя JadTool.jar из WTK
  5. Беги java -jar JadTool.jar -addcert -alias {myalias} -storepass {mypassword} -keystore {mykeystore} -inputjad {myinputjad} -outputjad {myoutputjad}
  6. Теперь снова добавьте подпись к JAD , используя JadTool.jar
  7. Беги java -jar JadTool.jar -addjarsig -alias {myalias} -jarfile {myjar} -storepass {mypassword} -keypass {mypassword} -keystore {mykeystore} -inputjad {myinputjad} -outputjad {myoutputjad}

Развертывание

  1. Разверните это на веб-сервере с правильно установленными типами MIME и загрузите его на свой телефон, и это будет надежное стороннее приложение
  2. Вы также можете развертывать приложения на телефонах, отправляя JAR & JAD на телефон по Bluetooth, инфракрасному излучению или кабелю, в зависимости от функций вашего телефона.На телефонах Nokia файлы появляются в вашем почтовом ящике SMS

Установка сертификата на телефон

  1. Импортируйте сертификат в свой телефон, в Windows XP с пакетом обновления 2 я мог бы сделать это, щелкнув правой кнопкой мыши файл и выбрав "Отправить на устройство Bluetooth", вы также должны иметь возможность отправлять файлы по кабелю или инфракрасному излучению (ИК).ПРИМЕЧАНИЕ:Я в любом случае не нашел способа импортировать сертификат на телефон Series 40
  2. После установки сертификата его необходимо авторизовать для "Установки приложения".На моем телефоне (Nokia 6680) это находится в разделе Инструменты-> Настройки-> Управление сертификатами-> Настройки доверия, я включил все, но я думаю, что "Установка приложения" - это все, что вам нужно

Общие проблемы

  1. Приложение, не установленное с помощью JAD:Приложению доверяют только в том случае, если оно установлено с помощью JAD, приложение все равно будет устанавливаться из jar, но ему не будут доверять.
  2. Настройки доверия приложению не установлены:Как только ваше приложение установлено, вам нужно указать, насколько ему доверять (по умолчанию оно получает не все разрешения).На телефоне Nokia Series 60 они находятся в приложении.Менеджер.
  3. Корневой сертификат отсутствует в телефоне:На некоторых телефонах отсутствуют сертификаты Java Verified certificate и / или Verisign проверьте соответствующий сертификат в меню Сервис-> Настройки-> Управление сертификатами
  4. Сбой авторизации:- За этим стоит целый ряд возможных причин, вот те, с которыми я столкнулся
    1. Сертификат отсутствует на телефоне, дважды проверьте, установлен ли ваш сертификат и отмечен ли он как доверенный для установки приложений в управлении сертификатами
    2. Перезагрузка:Полностью удалите приложение, затем перезагрузите телефон попробуйте также вынуть аккумулятор и SIM-карту, часто все усложняется, особенно если вы много раз переустанавливали без предварительной деинсталляции
    3. Несоответствие JAD / JAR:Дважды проверьте размер приложения в JAD, помните, что важно количество байт, а НЕ размер на диске
    4. Кэш браузера:Если вы устанавливаете по воздуху, обязательно очистите кэш вашего браузера перед установкой
    5. Я слышал, но не проверял, что разрыв строки в MIDlet-Permissions может вызвать проблемы, но мне кажется, что на Nokia 6680/6630 / 6230i все в порядке (может быть, зависит от прошивки?)
    6. В MIDlet-Permissions атрибут является причиной многих проблем (особенно с учетом того, что документация часто неверна / отсутствует или отличается в зависимости от телефона), попробуйте сначала исключить его и добавлять разрешения по одному за раз.Некоторые телефоны будут жаловаться на разрешения, которые они не поддерживают, некоторые будут игнорировать их
  5. В некоторых ранних прошивках Nokia 6600 обнаружена ошибка, которая останавливает установку доверенных мидлетов
  6. Сертификат еще не действителен:Если вы сгенерировали сертификат самостоятельно, срок его действия может начаться завтра, также, если даты вашего компьютера и телефона отличаются, срок действия сертификата может выйти за пределы
  7. Нет управления сертификатами на телефонах Series 40, вы можете установить подписанное приложение, но поведение с самозаверяющими сертификатами странное
  8. Проблемы с JadTool:Я не сталкивался ни с одной из этих проблем, но многие другие люди сталкивались
    1. "У меня возникают проблемы, если я пытаюсь использовать jadtool вручную.У меня есть цепочка сертификатов, и, похоже, я не могу добавить второй сертификат в файл JAD с помощью любого WTK jadtool.Интересной частью, однако, является то, что я могу успешно подписать мидлет, используя любой из тех же графических интерфейсов WTK - они правильно добавляют второй сертификат.Мои шаги:
      1. Используйте 1.4.2_06 jarsigner.exe для подписи jar
      2. Используйте WTK (2.2 или 2.3 beta) jadtool для добавления cert с certnum 1
      3. Если я вызываю jadtool для addcert с certnum 2, вставляется тот же сертификат, что и cert 1-2, я предполагаю, что я что-то делаю неправильно, поскольку графический интерфейс WTK, похоже, работает просто отлично "
    2. "Я получил сообщение в новостной группе KVM на тему, в которой говорится, что в jadtool есть ошибка, и автор утверждает, что отправил отчет об ошибке и опубликовал патч: http://archives.java.sun.com/cgi-bin/wa?A2=ind0508&L=kvm-interest&F=&S=&P=9858 Одно интересное замечание, которое также было опубликовано, заключалось в том, что параметры сертификата JAD являются статическими, поэтому, как только вы получите их из WTK правильно, вы можете поместить их статически в ant-скрипт ".
    3. "Я пытаюсь подписать мидлет для устройства Nokia 6620.Я использую сертификат подписи кода Verisign, который фактически содержит два сертификата (пользовательский и промежуточный CA).Я использую инструмент подписи WTK 2.2.Знаете ли вы , поддерживает ли этот инструмент два сертификата при подписании?Подпись добавляется в файл JAD с двумя сертификатами, но при установке я получаю сообщение об ошибке безопасности.Я проверил на устройстве, и для Verisign установлены разные корневые сертификаты, но он по-прежнему терпит неудачу!
    4. "Если вы хотите, вы можете загрузить sprintpcs developer kit, поскольку он поддерживает двойные сертификаты (http://developer.sprintpcs.com).Однако я так и не получил этот сертификат для работы на телефоне Nokia (6620 / cingular), хотя он работает на телефонах sprint (с включенным правами root разработчика).В конечном счете, я заставил все работать, только создав сертификат, как описано в этом блоге, и установив его на телефон.Как ни странно, даже несмотря на то, что корневой сертификат для моего сертификата с подписью versign * был * на телефоне 6620, он все равно никогда не установил бы мой мидлет, как вы думаете, это должно быть ".
  9. Старые телефоны (6230 / i, 6682) не поддерживают сертификаты x509, в качестве возможного решения был предложен WPKI, но я не исследовал это
  10. Подключение к розеткам может быть проблематичным (http://discussion.forum.nokia.com/forum/showthread.php?t=68306 ) возможно, из-за инфраструктуры WAP и услуг, предоставляемых оператором.HTTP - гораздо более безопасный в использовании протокол
  11. "Зайдите в Интернет и проверьте действительность заявки":Да / Нет.Если я нажму на кнопку "Да" на телефоне, я получу следующую ошибку:"Сертификат отозван для этого приложения", и установка завершается с ошибкой.Чтобы исправить это, перейдите в Сервис -> Менеджер -> Меню -> Настройки -> Онлайн-проверка сертификата [Вкл. / выкл. / Обязательно] Там также есть настройка адреса по умолчанию.Если требуется настройка онлайн-контроля, проверка завершится неудачей, если адрес по умолчанию отсутствует.видишь http://discussion.forum.nokia.com/forum/showthread.php?t=71071

Доверительные Домены

  1. В MIDP2 есть 4 разных домена доверия (производитель, оператор, доверенная третья сторона и ненадежный).Доверенная третья сторона - единственная, которая действительно может нам пригодиться.Она предоставляет следующие опции на моем Nokia 6680 (Vodafone UK):
  2. Доступ к сети:Не разрешено, спрашивайте каждый раз, Спрашивайте в первый раз Обмен сообщениями:Не разрешено, спрашивайте каждый раз приложение Автозапуск:Не разрешено, спрашивайте каждый раз, Спрашивайте в первый раз Подключение:Не разрешено, Спрашивайте каждый раз, Спрашивайте в первый раз, Всегда разрешено Мультимедиа:Не разрешено, спрашивайте каждый раз, Спрашивайте в первый раз Считывать пользовательские данные:Не разрешено, спрашивайте каждый раз, Спрашивайте в первый раз, всегда разрешено Редактировать пользовательские данные:Не разрешено, Спрашивай каждый раз, Спрашивай в первый раз, Всегда разрешено
  3. Эти настройки определяются оператором и производителем телефона и, следовательно, различаются в зависимости от телефона, производителя и оператора.

Нерешенные проблемы

  1. Мне удалось подписать JAD в этом формате с помощью утилит J2ME WTK, но при попытке установить его на устройство я получаю сообщение "Ошибка аутентификации приложения 909".

Образец JAD

MIDlet-Jar-URL: MyApp.jar
MIDlet-Jar-Size: 201365
MIDlet-Name: MyApp
MIDlet-Vendor: EC1M
MicroEdition-Profile: MIDP-2.0
MicroEdition-Configuration: CLDC-1.1
MIDlet-Icon: logo.png
MIDlet-Push-1: sms://:6553,net.ec1m.MyApp.midp.MyAppMIDlet,*
MIDlet-Description: MyApp MIDlet
MIDlet-Permissions: javax.microedition.io.PushRegistry,javax.microedition.io.Connector.sms...
MIDlet-Version: 1.0.67 MIDlet-1: MyApp, logo.png,net.ec1m.MyApp.midp.MyAppMIDlet
MIDlet-Certificate-1-1: MIICODCCAaECBEKqpfswDQYJKoZIhvcNAQEEBQAwYz...=
MIDlet-Jar-RSA-SHA1: EUsAch/.../hEZOsJsiCjBOhNs/3FSw4=

Примерный Манифест

Manifest-Version: 1.0
MIDlet-Name: MyApp  
Created-By: 1.4.2_05-b04 (Sun Microsystems Inc.)
MIDlet-Push-1: sms://:6553,net.ec1m.MyApp.midp.MyAppMIDlet,*
MIDlet-1: MyApp, logo.png, net.ec1m.MyApp.midp.MyAppMIDlet
MicroEdition-Configuration: CLDC-1.1
Ant-Version: Apache Ant 1.6.2
MIDlet-Icon: logo.png
MIDlet-Vendor: EC1M
MIDlet-Permissions: javax.microedition...
MIDlet-Version: 1.0.67
MicroEdition-Profile: MIDP-2.0
MIDlet-Description: MyApp MIDlet

Пример файла сборки Ant Я поместил наши EC1M файл сборки ant зайдите на наш веб-сайт, чтобы (надеюсь) сделать все это немного проще для вас.Другие Ресурсы Это Часто задаваемые вопросы на форуме Nokia это стоит того, чтобы прочитать.

Другие советы

Шаг 1:Создайте запрос CSR, который может быть вызван

1) Creating keystore and using that generate CSR file.
2) Perform steps given by certificate authority and download CSR and private key files.

Шаг 2:Передайте вашу информацию центру сертификации для проверки.

Шаг 3:Вам будет предоставлен сертификат для подписания кода.

Шаг 4:Вам необходимо отключить загрузку промежуточного сертификата вместе с корневым сертификатом.

Шаг 5:Теперь у вас будет your_domain_name.crt, IntCertCA.crt, TrustedRoot.crt

Now you need to create a chained certificate by combining all above certificates.

1) Open a text editor (such as wordpad) and paste the entire body of each certificate into one text file in the following order:

    The Primary Certificate - your_domain_name.crt
    The Intermediate Certificate - IntCertCA.crt
    The Root Certificate - TrustedRoot.crt
    Make sure to include the beginning and end tags on each certificate. The result should look like this:

    -----BEGIN CERTIFICATE----- 
    (Your Primary SSL certificate: your_domain_name.crt) 
    -----END CERTIFICATE----- 
    -----BEGIN CERTIFICATE----- 
    (Your Intermediate certificate: IntCertCA.crt) 
    -----END CERTIFICATE----- 
    -----BEGIN CERTIFICATE----- 
    (Your Root certificate: TrustedRoot.crt) 
    -----END CERTIFICATE-----

    Save the combined file as your_domain_name.pem. The .pem file is now ready to use.

Шаг 6:Импортируйте закрытый ключ в ваш your_domain_name.pem

    openssl pkcs12 -export -in your_domain_name.pem -inkey your_private_key.key -out output_file_name.p12 -name your_alias


    NOTE: PLEASE REMOVE \ FROM FOLLOWING COMMANDS AND EXECUTE ( \ IS BASICALLY COMMAND CONTINUETY )

Шаг7:Создайте хранилище ключей из output_file_name.p12

    keytool -importkeystore \
     -deststorepass changeit -destkeypass changeit -destkeystore your_domain_keystore.ks \
     -srckeystore output_file_name.p12 -srcstoretype PKCS12 -srcstorepass your_store_password \
     -alias your_alias

Шаг8:ПРИМЕЧАНИЕ:ПОЖАЛУЙСТА, СДЕЛАЙТЕ РЕЗЕРВНУЮ КОПИЮ ВАШЕГО JAD-ФАЙЛА, ПРЕЖДЕ ЧЕМ ЗАПУСКАТЬ СЛЕДУЮЩИЕ КОМАНДЫ.

    Add your certificates to your your_midlet_name.jad file.

    java -jar JadTool.jar -addcert -alias your_alias \
    -storepass your_store_password \
    -keystore your_domain_keystore.ks \
    -inputjad your_midlet_name.jad -outputjad your_midlet_name.jad      

Шаг 9:ПРИМЕЧАНИЕ:ПОЖАЛУЙСТА, СДЕЛАЙТЕ РЕЗЕРВНУЮ КОПИЮ ВАШЕГО JAD-ФАЙЛА, ПРЕЖДЕ ЧЕМ ЗАПУСКАТЬ СЛЕДУЮЩИЕ КОМАНДЫ.

    Sign your midlet, also use your_midlet_name.jad file generated from Step8.

    java -jar JadTool.jar -addjarsig \
    -alias your_store_password \
    -storepass your_store_password \
    -keypass your_store_password \
    -keystore your_domain_keystore.ks \
    -inputjad your_midlet_name.jad -outputjad your_midlet_name.jad
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top