Подтвердить что ты не робот

Как вы подписываете Java Midlet?

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

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

4b9b3361

Ответ 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

  1. Sign the Application using jarsigner  
  2. Выполнить jarsigner -keystore {mykeystore} -storepass (mypassword} {myjar} {myalias}  
  3. Теперь у вас есть подписанная банка, вам нужно обновить MIDlet-Jar-Size в JAD  
  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}

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

  •   
  • Разверните это на веб-сервере с установленными типами 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 стоит прочитать.

Ответ 2

Шаг 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.

Step6:       Импортируйте закрытый ключ в свой файл 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 )

Step7:       Создание хранилища ключей из файла 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

Step8:       ПРИМЕЧАНИЕ: ПОЖАЛУЙСТА, ОБРАТИТЕСЬ К РЕЗУЛЬТАТУ ВАШЕГО ФАЙЛА 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      

Step9:       ПРИМЕЧАНИЕ: ПОЖАЛУЙСТА, ОБРАТИТЕСЬ К РЕЗУЛЬТАТУ ВАШЕГО ФАЙЛА 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