2009-09-05 15 views
12

Proste pytanie z dość skomplikowaną odpowiedzią:Jak podpisać Java Midlet?

Jak wpisać Java Midlet, aby można było go załadować na telefon komórkowy z mniejszymi monitami bezpieczeństwa?

+0

+1: Szukałem czegoś takiego (+: N00b do J2ME – Everyone

Odpowiedz

25

Get wymagane oprogramowanie

  1. Java SDK (JDK) z Sun (należy już tego)
  2. Java Wireless Toolkit (WTK) również z Sun
  3. Opcjonalnie uzyskać i zainstalować Ant i Antenna co pozwala na zautomatyzowanie Twoja kompilacja (zdecydowanie polecam)

Importuj istniejący certyfikat (jeśli masz)

  1. Jeśli kupiłeś certyfikatu z Verisign (lub innego operatora) trzeba zaimportować certyfikat do swojego J2SE kluczy.
  2. Spróbuj użyć następującego polecenia keytool -import -alias {myalias} -file {mycertificate} (I nie były w stanie to sprawdzić, ponieważ nie ma odpowiedniego certyfikatu)
  3. Uruchom keytool -list aby zobaczyć swój nowy certyfikat
  4. Następnie należy wyeksportować certyfikat więc można zaimportować go do telefonu
  5. Run keytool -export -alias {myalias} -file mycertificate.crt
  6. zaimportować certyfikat do telefonu (szczegóły poniżej)

Tworzenie i zaimportować nową (test) zaświadczenie

  1. Trzeba użyć keytool (z JDK)
  2. użyłem następującego polecenia keytool -genkey -alias {myalias} -keyalg RSA -validity 365
  3. ten poprosi o podanie hasła magazynu kluczy, wpisz swój Hasło magazynu kluczy (jeśli masz istniejący magazyn kluczy) lub ten, którego chcesz użyć, jeśli jeszcze go nie masz
  4. Wypełnij wszystkie pytania dotyczące lokalizacji/nazwy firmy itp.
  5. Run keytool -list aby zobaczyć swój nowy certyfikat
  6. Następnie należy wyeksportować certyfikat, dzięki czemu można importować do telefonu
  7. Run keytool -export -alias {myalias} -file mycertificate.crt
  8. zaimportować certyfikat do telefonu (szczegóły poniżej)
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): 

Budowa i pakować aplikacja

  1. Skorzystaj z javac, aby zbudować swój MIDlet, zwracając szczególną uwagę na opcje ścieżki klas i bootclasspath (w przeciwnym razie przetestowanie nie powiedzie się). Ustawiłem również cel na 1.1 i źródło 1.3
  2. Wygeneruj plik JAD najważniejszymi atrybutami w JAD są: MIDlet-Jar-URL, MIDlet-Jar-Size, MIDlet-Permissions zawarliśmy także MIDlet-Icon, MicroEdition-Configuration , Profil MicroEdition, nazwa MIDletu, MIDlet-Push-1, ikona MIDletu, opis MIDletu i wersja MIDletu
  3. Wygeneruj plik MANIFEST.MF na podstawie JAD, musisz usunąć rozmiar MIDlet-Jar i MIDlet-Jar-URL
  4. Both these tasks can be completed using the wtkJad Antenna task
  5. 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. Run jarsigner -keystore {mykeystore} -storepass (mypassword} {myjar} {myalias}
  3. teraz masz podpisaną słoik trzeba zaktualizować MIDlet-Jar-Size w JAD
  4. teraz dodać certyfikat do JAD korzystając JadTool.jar z WTK
  5. Run java -jar JadTool.jar -addcert -alias {myalias} -storepass {mypassword} -keystore {mykeystore} -inputjad {myinputjad} -outputjad {myoutputjad}
  6. Teraz dodać podpis do JAD ponownie używając JadTool.jar
  7. Run java -jar JadTool.jar -addjarsig -alias {myalias} -jarfile {myjar} -storepass {mypassword} -keypass {mypassword} -keystore {mykeystore} -inputjad {myinputjad} -outputjad {myoutputjad}

Wdrożenie

  1. Deploy to serwer WWW z typów MIME prawidłowo ustawione i pobierz go na telefon, a będzie to zaufana aplikacja innej firmy.
  2. Możesz również wdrażać aplikacje na telefonach, wysyłając JAR & JAD do telefonu przez Bluetooth lub podczerwień lub kabel w zależności od funkcji telefonu. W telefonach Nokia pliki pojawiają się w skrzynce odbiorczej SMS

Instalacja certyfikatu w telefonie

  1. zaimportować certyfikat do telefonu, w systemie Windows XP z dodatkiem SP2 mogłem zrobić to klikając prawym przyciskiem myszy plik i wybranie "Wyślij do urządzenia Bluetooth", powinieneś być w stanie wysyłać pliki również kablem lub podczerwienią (IR). UWAGA: I nie znalazłem i tak żadnego importu certyfikatu na telefonie z serii 40
  2. Po zainstalowaniu certyfikatu musi być ono autoryzowane na "Instalacja aplikacji".Na mój telefon (Nokia 6680) to pod Narzędzia- > Ustawienia- > Certyfikat Management- > ustawień zaufania, włączyłem wszystkiego, ale myślę, że „Instalacja aplikacji” jest wszystko, czego potrzeba

Najczęstsze problemy

  1. aplikacja nie jest zainstalowana przy użyciu JAD: aplikacja jest zaufany tylko wtedy, gdy jest instalowany przy użyciu JAD, aplikacja będzie jeszcze zainstalować ze słoika, ale nie będzie można ufać.
  2. Nie ustawiono ustawień zaufania aplikacji: Po zainstalowaniu aplikacji należy określić, ile zaufania należy jej podać (domyślnie nie otrzymuje ona wszystkich uprawnień). W telefonie Nokia Series 60 można je znaleźć w aplikacji. Menedżer.
  3. certyfikat głównej brakuje telefon: weryfikowany certyfikat Java i/lub certyfikaty Verisign są z niektóre telefony sprawdzić pod Narzędzia- > Ustawienia- > Zarządzania Certyfikat dla odpowiedniego świadectwa
  4. Authorization Failed brakuje: - Istnieje całe mnóstwo możliwe przyczyny to tu są te natknąłem
    1. Certyfikat brakuje telefon dwukrotnie sprawdzić certyfikat jest zainstalowany i został oznaczony jako zaufany do aplikacji instaluje się certyfikat zarządzania
    2. Reboot: odinstalować aplikację całkowicie następnie uruchom ponownie telefon, spróbuj wziąć baterię i SIM również, często rzeczy się skręcają, zwłaszcza jeśli wielokrotnie instalowałeś ponownie bez deinstalowania pierwszej niezgodności JAD/JAR: dwukrotnie sprawdź rozmiar aplikacji w JAD, pamiętaj, że jest to liczba bajtów że ważne jest nie rozmiar na dysku
    3. cache
    4. Przeglądarka: Jeśli instalujesz na powietrze upewnij się, wyczyść pamięć podręczną przeglądarki przed zainstalowaniem
    5. słyszałem, ale nie sprawdziła, że ​​podziały wiersza w MIDlet-Permissions może powodować problemy ale wydaje mi się okej na Nokia 6680/6630/6230i (może być zależny od oprogramowania)?
    6. Atrybut MIDlet-Permissions jest przyczyną wielu problemów (zwłaszcza od czasu dokumentowania). często jest źle/brakuje lub różni się w zależności od telefonu), spróbuj najpierw wyjść i dodać uprawnienia za jednym razem. Niektóre telefony będą narzekać uprawnieniami one nie obsługują, niektóre będą im
  5. ignorować Jest to błąd w niektórych wczesnych Nokia 6600 firmware, które zatrzymują instalacji zaufanych MIDletami
  6. Certyfikat jeszcze nieważny: Jeśli sam wygenerował certyfikat, może mieć jutrzejszą datę ważności, także jeśli daty twojego komputera i telefonu są różne, może być poza okresem ważności certyfikatu
  7. Brak zarządzania certyfikatami w telefonach Series 40, możesz zainstalować podpisany aplikacja, ale zachowanie jest dziwne w przypadku samopodpisanych certyfikatów
  8. JadTo ol problemy: Nie doświadczyłem żadnego z tych problemów, ale wiele innych osób ma
    1. "Mam problemy, jeśli spróbuję ręcznie użyć jadtool. Mam łańcuch certyfikatów i nie mogę uzyskać drugiego certyfikatu dodanego do pliku JAD przy użyciu dowolnego jadtolu WTK. Ciekawą częścią jest jednak to, że mogę z powodzeniem podpisać program pośredni za pomocą jednego z tych samych interfejsów GUI WTK - poprawnie dodają drugi certyfikat.Moje kroki:
      1. Zastosowanie 1.4.2_06 jarsigner.exe podpisać słoika
      2. Używaj WTK (2.2 lub 2.3 beta) jadtool do addcert z certnum 1
      3. Jeśli zadzwonię jadtool do addcert z certnum 2 jest taki sam certyfikat wstawiony jako cert 1-2 jestem zakładając robie coś nieprawidłowo, ponieważ gui WTK wydaje się działać dobrze „
    2. ” otrzymałem post w grupie prasowej KVM na temat, który członkowskich istnieje błąd w jadtool i autor twierdzi, że złożył zgłoszenie błędu i wysłał łatkę: http://archives.java.sun.com/cgi-bin/wa?A2=ind0508&L=kvm-interest&F=&S=&P=9858 Jedna interesująca uwaga Zostało również napisane, że paramtery JAD są statyczne, więc po ich prawidłowym wprowadzeniu do WTK można je statycznie umieścić w skrypcie ant. "
    3. " Próbuję podpisać MIdlet dla urządzenia Nokia 6620. Używam certyfikatu Verisign Code Signing, który zawiera dwa certyfikaty (User and Intermediate CA). Używam narzędzia do podpisywania WTK 2.2. Czy wiesz, czy to narzędzie obsługuje dwa certyfikaty podczas podpisywania? Podpis jest dodawany do pliku JAD z dwoma certyfikatami, ale podczas instalacji wystąpił błąd zabezpieczeń. Sprawdziłem urządzenie i istnieją różne certyfikaty główne zainstalowane dla Verisign, ale nadal nie działa!
    4. "Jeśli chcesz, możesz pobrać zestaw programisty sprintpcs, ponieważ obsługuje on dwa certyfikaty (http://developer.sprintpcs.com) .Jednakże nigdy nie otrzymałem tego certyfikatu do pracy na telefonie Nokia (6620/cingular), mimo że działa on na telefonach sprinterskich (z włączonym rootem programisty) Ostatecznie, mam tylko rzeczy do pracy, tworząc certyfikat opisany na tym blogu i instalując go przez telefon. Dziwacznie, mimo że głównym certyfikatem dla mojego certyfikatu z podpisami versus * był * na 6620 telefon, to nigdy nie zainstalowałoby mojego MIDletu tak, jak myślałeś, że powinno. "
  9. starych telefonów (6230/i, 6682) nie obsługują certyfikatów x509, WPKI sugerowano jako możliwe rozwiązanie, ale nie badali ten
  10. połączenia gwintowane mogą być problematyczne (http://discussion.forum.nokia.com/forum/showthread.php?t=68306) ewentualnie ze względu na infrastrukturę WAP i usługi świadczone przez operatora. HTTP jest znacznie bezpieczniejszym protokołem do używania
  11. "Przejdź do trybu online i sprawdź ważność aplikacji": Tak/Nie. Jeśli kliknę przycisk Tak, telefon dostanie następujący błąd: "Certyfikat unieważniony dla tej aplikacji" i instalacja nie powiedzie się. Aby to poprawić, przejdź do Narzędzia - > Manager - > Menu - > Ustawienia - > Online Certif Check [On/Off/Required] Jest również ustawienie adresu domyślnego. Jeśli ustawienie kontroli online jest wymagane, kontrola nie powiedzie się, jeśli nie ma adresu domyślnego. zobacz http://discussion.forum.nokia.com/forum/showthread.php?t=71071

zaufania Domeny

  1. Istnieją 4 różne domeny zaufania w MIDP2 (producent, operator, zaufaną stronę trzecią, i niezaufane). Zaufana strona trzecia jest jedyną, która naprawdę nam się podoba.W telefonie Nokia 6680 (Vodafone UK) dostępne są następujące opcje:
  2. Dostęp do sieci: Niedozwolony, Pytaj za każdym razem, Zapytaj po raz pierwszy Wiadomości: Niedozwolone, Pytaj za każdym razem, gdy aplikacja Automatyczne uruchamianie: Niedozwolone, Pytaj co czas, Zapytaj po raz pierwszy Łączność: Niedozwolone, Pytaj za każdym razem, Pytaj za pierwszym razem, Zawsze dozwolone Multimedia: Niedozwolone, Pytaj za każdym razem, Pytaj pierwszy raz Czytaj Dane użytkownika: Niedozwolone, Pytaj za każdym razem, Pytaj po raz pierwszy, Zawsze dozwolone Edytuj dane użytkownika: Niedozwolone, Pytaj za każdym razem, Pytaj za pierwszym razem, Zawsze dozwolone
  3. Ustawienia te są definiowane przez operatora i producenta telefonu, a zatem różnią się w zależności od telefonu, producenta i operator.

nierozwiązanych problemów

  1. udało mi się podpisać JAD z tego formatu przy użyciu narzędzia J2ME WTK, ale gdy próbuje zainstalować go na urządzeniu pojawia się komunikat „autoryzacja Aplikacja nie 909”.

JAD Próbka

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= 

Przykładowy Manifest

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 

Próbka Ant kompilacji Włożyłam naszych EC1Mant build file się na naszej stronie internetowej (mam nadzieję) wszystko to trochę łatwiejsze dla Ciebie. Inne zasoby Ten numer FAQ on the Nokia Forum jest wart odczytu.

+0

Mam zainstalowany jego certyfikatu korzeń .. użyciu tego symcaimport.redelijkheid.com/ teraz Ustawienia> Zabezpieczenia > certyfikaty> godaddy> wybierz zastosowanie> istnieją trzy opcje serwer auth. krzyż certy. app podpisywanie wśród których aplikacja jest wyłączona znak .. i kiedy zainstalować aplikację i kliknij na nią pokazuje nieprawidłową aplikację „usunąć?” certyfikat rot Mam zainstalowany jest od https://certs.godaddy.com/anonymous/repository.seam Go Daddy Certyfikat główny Urzędu Certyfikacji Klasy 2 (format DER) , ale pokazuje "Nie znaleziono certyfikatu na telefonie lub karcie SIM" –

+1

dobra odpowiedź. wikifikuj to! – kokbira

+0

Zainstalowałem certyfikat na moim telefonie komórkowym ('Nokia Asha 302'), ale kiedy wchodzę do' Zarządzania certyfikatami' opcja 'Podpisywanie aplikacji' jest wyszarzona, więc pojawia się błąd' Certyfikat nie na urządzeniu lub karcie SIM' kiedy próbuję aby go otworzyć. Jak mogę to włączyć? Jestem zdesperowana! Próbuję podpisać autorską aplikację przez 2 dni i nie mogę jej uruchomić! :( –

2

Krok 1: Tworzenie żądania CSR, które mogą być podjęte przez

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

Krok 2: podać swoje informacje do urzędu certyfikacji w celu weryfikacji.

Krok 3: Otrzymasz certyfikat do podpisywania kodu.

Krok 4: Należy pobrać pośredni certyfikat obciążenia wraz z certyfikatem głównym.

Krok 5: Teraz będzie o 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: Importuj klucz prywatny do swojej 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: Utwórz magazyn kluczy z nazwa_pliku_wyjściowego.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 

Krok8: UWAGA: PROSZĘ PODAĆ KOPIĘ ZAPASOWĄ SWOJEGO PLIKU PRZED WYKONANIEM NASTĘPUJĄCYCH KOMEND.

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: UWAGA: zrób kopię zapasową pliku przed JAD wyzwalanie następujące polecenia.

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 
Powiązane problemy