Ответ 1
Получить требуемое программное обеспечение
- Java SDK (JDK) от Sun (вы должны уже имеют это)
- Java Wireless Toolkit (WTK) также из Sun
- По желанию получите и установите Ant и Antenna в позволяют автоматизировать сборку (я бы настоятельно рекомендовал это)
Импортировать существующий сертификат (если он есть)
- Если вы приобрели сертификат от Verisign (или другого поставщика), вам необходимо импортировать сертификат в хранилище ключей J2SE.
- Попробуйте использовать следующую команду
keytool -import -alias {myalias} -file {mycertificate}
(я не смог проверить это, так как у меня нет надлежащего сертификата) - Запустите
keytool -list
, чтобы увидеть новый сертификат. - Затем вы должны экспортировать сертификат, чтобы его можно было импортировать на свой телефон.
- Запустить
keytool -export -alias {myalias} -file mycertificate.crt
- Импортируйте сертификат в свой телефон (подробнее см. ниже).
Создать и импортировать новый (тестовый) сертификат
- Вам нужно использовать keytool (из JDK)
- Я использовал следующую команду
keytool -genkey -alias {myalias} -keyalg RSA -validity 365
- Это даст вам пароль к хранилищу ключей, введите пароль к хранилищу ключей (если у вас есть существующее хранилище ключей) или тот, который вы хотите использовать, если у вас еще нет еще
- Заполните все подсказки о местонахождении/названии компании и т.д.
- Запустите
keytool -list
, чтобы увидеть новый сертификат. - Затем вы должны экспортировать сертификат, чтобы его можно было импортировать на свой телефон.
- Запустить
keytool -export -alias {myalias} -file mycertificate.crt
- Импортируйте сертификат в свой телефон (подробнее см. ниже).
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):
Создайте и упакуйте приложение
- Используйте
javac
, чтобы создать свой MIDlet, уделяя особое внимание вашим параметрам classpath и bootclasspath (иначе превентификация не удастся). Я также установил цель в 1.1 и источник в 1.3 - Создайте свой JAD файл, чтобы критические атрибуты в JAD были MIDlet-Jar-URL, MIDlet-Jar-Size, MIDlet-Permissions мы также включили MIDlet-Icon, MicroEdition-Configuration, MicroEdition-Profile, MIDlet-Name, MIDlet-Push-1, MIDlet-Icon, MIDlet-Description и MIDlet- Версия
- Создайте файл MANIFEST.MF на основе JAD, вы должны удалить MIDlet-Jar-Size и
MIDlet-Jar-URL
- Both these tasks can be completed using the wtkJad Antenna task
- Package and preverify the app using the wtkPackage Antenna Task you must set the classpath and bootclasspath properties correctly otherwise Preverification will fail
Sign the application
- Sign the Application using
jarsigner
- Выполнить
jarsigner -keystore {mykeystore} -storepass (mypassword} {myjar} {myalias}
- Теперь у вас есть подписанная банка, вам нужно обновить
MIDlet-Jar-Size
в JAD - Теперь добавьте сертификат в JAD, используя
JadTool.jar
из WTK - Запустить
java -jar JadTool.jar -addcert -alias {myalias} -storepass {mypassword} -keystore {mykeystore} -inputjad {myinputjad} -outputjad {myoutputjad}
- Теперь добавьте подпись в JAD с помощью
JadTool.jar
- Запустить
java -jar JadTool.jar -addjarsig -alias {myalias} -jarfile {myjar} -storepass {mypassword} -keypass {mypassword} -keystore {mykeystore} -inputjad {myinputjad} -outputjad {myoutputjad}
Развертывание
- Разверните это на веб-сервере с установленными типами MIME и загрузите его на свой телефон, и это будет доверенное стороннее приложение.
- Вы также можете развернуть приложения на телефоны, отправив JAR и JAD на телефон через Bluetooth или ИК-порт или кабель в зависимости от ваших функций телефона. На телефонах Nokia файлы появится в папке входящих сообщений SMS
Установка сертификата на телефоне
- Импортируйте сертификат в свой телефон, в Windows XP SP2 я мог бы сделать это, щелкнув правой кнопкой мыши файл и выбрав "Отправить на устройство Bluetooth", вы также сможете отправлять файлы по кабелю или инфракрасному (ИК). NB: I не нашли в любом случае импорта сертификата на телефоне Series 40.
- После того, как сертификат установлен, его необходимо разрешить для "Установка приложения". На моем телефоне (Nokia 6680) это находится под Настройки- > Настройки- > Управление сертификатами- > Trust Settings, я включил все, но я думаю, что "Установка приложений" - это все, что вам нужно.
Общие проблемы
- Приложение не установлено с помощью JAD. Приложению доверяют только если он установлен с помощью JAD, приложение все равно будет устанавливать из банки, но ему не будет доверено.
- Параметры доверия приложения не установлены: после установки вашего приложения вам нужно указать, сколько доверять ему (он не получает все разрешения по умолчанию). На телефоне Nokia Series 60 они находятся в приложении. Менеджер.
- Отсутствует корневой сертификат на телефоне: сертификат Java Verified и/или сертификаты Verisign отсутствуют на некоторых телефонах в разделе "Сервис" и "Настройки" - "Управление сертификатами" для соответствующего сертификата.
- Авторизация не выполнена: - Есть целый ряд возможных причин, по которым мы здесь, - вот те, с которыми я столкнулся
- Сертификат отсутствует на телефоне, дважды проверьте, что ваш сертификат установлен, и был отмечен как надежный для установки приложений в системе управления сертификатами.
- Перезагрузитесь: полностью удалите приложение, затем перезагрузите телефон, также попробуйте взять аккумулятор и SIM-карту, часто что-то извращается, особенно если вы много раз переустанавливаете, не удаляя первый
- Несоответствие JAD/JAR: дважды проверьте размер приложения в JAD, запомните его количество байтов, которое важно НЕ размер на диске
- Кэш браузера: если вы устанавливаете по воздуху, убедитесь, что вы очистили кеш браузера перед установкой
- Я слышал, но не проверял, что разрыв строки в
MIDlet-Permissions
может вызвать проблемы, но мне кажется, что это нормально для Nokia 6680/6630/6230i (может быть зависит от прошивки?) - Атрибут
MIDlet-Permissions
является причиной множества проблем (особенно потому, что документация часто ошибочна/отсутствует или отличается в зависимости от телефона), попробуйте сначала оставить ее и добавить разрешения в один момент. Некоторые телефоны будут жаловаться на разрешения, которые они не поддерживают, некоторые будут игнорировать их.
- В некоторых ранних прошивках Nokia 6600 есть ошибка, которая останавливает установку доверенных MIDlet
- Сертификат еще не действителен: если вы сами сгенерировали сертификат, у него может быть дата начала начала завтрашнего дня, а также если ваш компьютер и даты телефона различны, вы можете быть вне срока действия сертификата
- Нет управления сертификатами на телефонах Series 40, вы можете установить подписанное приложение, но поведение странно с самоподписанными сертификатами.
- Проблемы с JadTool: я не испытывал ни одной из этих проблем, но многие другие люди
- "У меня есть проблемы, если я пытаюсь использовать jadtool вручную. У меня есть цепочка сертификатов, и я не могу получить второй сертификат, добавленный в JAD файл, используя любой JT файл WTK. Однако интересная часть состоит в том, что я могу успешно подпишите мидлет с помощью любого из тех же интерфейсов GUI WTK - они правильно добавляют второй сертификат. Мои шаги:
- Использовать 1.4.2_06 jarsigner.exe для подписания jar
- Используйте WTK (2.2 или 2.3 бета) jadtool для добавления с certnum 1
- Если я вызываю jadtool для addcert с certnum 2, то тот же сертификат вставляется как cert 1-2 Я предполагаю, что я делаю что-то неправильно, так как WTK gui, похоже, работает нормально "
- "Я получил сообщение в новостной группе KVM по теме, в которой говорится, что в jadtool есть ошибка, и автор утверждает, что подал отчет об ошибке и опубликовал патч: http://archives.java.sun.com/cgi-bin/wa?A2=ind0508&L=kvm-interest&F=&S=&P=9858 Одно интересное примечание, которое также было опубликовано, состояло в том, что параметры cert JAD являются статичными, поэтому, как только вы правильно их получите из WTK, вы можете статически ставить их в ant script. "
- "Я пытаюсь подписать устройство MIdlet для Nokia 6620. Я использую сертификат подписи кода Verisign, который фактически содержит два сертификата (User и Intermediate CA). Я использую инструмент подписи WTK 2.2. Знаете ли вы, инструмент поддерживает два сертификата при подписании? Подпись добавляется в JAD файл с двумя сертификатами, но при установке я получаю сообщение об ошибке безопасности. Я проверил это устройство, и для Verisign установлены разные корневые сертификаты, но он все равно не работает!
- " Если вы хотите, вы можете скачать комплект разработчика sprintpcs, поскольку он поддерживает двойные сертификаты (http://developer.sprintpcs.com). Однако я так и не получил это сертификат для работы с телефоном Nokia (6620/cingular), хотя он работает на спринтерских телефонах (с включенным root-разработчиком). В конечном счете, я только начал работать, создав сертификат, как описано в этом блоге, и установил, что на телефон. Необычно, несмотря на то, что корневой сертификат для моего подписанного с сертификатом сертификата * был * на телефоне 6620, он все равно никогда не установит мой MIDlet, как вы думаете, он должен. "
- Старые телефоны (6230/i, 6682) не поддерживают сертификаты x509, WPKI был предложен как возможное решение, но я не исследовал это.
- Подключение к разъемам может быть проблематичным (http://discussion.forum.nokia.com/forum/showthread.php?t=68306) возможно, из-за инфраструктуры WAP и услуг, предоставляемых оператором. HTTP - более безопасный протокол для использования
- "Выйдите в Интернет и проверьте действительность заявки": Да/Нет. Если я нажму кнопку "Да" на телефоне, я получаю следующую ошибку: "Сертификат, отозванный для этого приложения", и установка завершается с ошибкой. Чтобы исправить это, перейдите в Инструменты → Менеджер → Меню → Настройки → Проверка онлайн-сертификата [Вкл./Выкл./Обязательно] Существует также настройка адреса по умолчанию. Если требуется настройка онлайн-контроля, проверка не будет выполнена, если адрес по умолчанию отсутствует. см. http://discussion.forum.nokia.com/forum/showthread.php?t=71071
Доверенные домены
- В MIDP2 существует 4 разных домена доверия (производитель, оператор, доверенный сторонний и ненадежный). Доверенная сторонняя сторона - это единственная возможность для нас. На ее Nokia 6680 (Vodafone UK) приведены следующие параметры: Доступ к сети: не разрешается, спрашивать каждый раз, спрашивать в первый раз Сообщения: не разрешено, спрашивать каждый раз приложение Автозапуск: не разрешено, спрашивать каждый раз, спрашивать в первый раз Подключение: не разрешено, спрашивать каждый раз, спрашивать в первый раз, всегда разрешено Мультимедиа: не разрешено, спрашивать каждый раз, спрашивать в первый раз Чтение данных пользователя: не разрешено, задавать каждый раз, спрашивать в первый раз, всегда разрешено Редактировать данные пользователя: не разрешено, спрашивать каждый раз, спрашивать в первый раз, всегда разрешено
- Эти настройки определяются оператором и изготовителем телефона и поэтому могут варьироваться между телефоном, производителем и оператором.
Неразрешенные проблемы
- Мне удалось подписать 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 файл сборки на нашем веб-сайте (надеюсь) сделайте все это немного легче для вас. Другие ресурсы Этот FAQ на форуме Nokia стоит прочитать.