سؤال

سؤال بسيط وإجابة معقدة إلى حد ما:

كيف يمكنك التوقيع على Java Midlet حتى تتمكن من تحميله على الهاتف المحمول مع مطالبات أمنية أقل؟

هل كانت مفيدة؟

المحلول

الحصول على البرامج المطلوبة

  1. جافا SDK (JDK) من شمس (يجب أن يكون لديك هذا بالفعل)
  2. مجموعة أدوات جافا اللاسلكية (WTK) أيضا من شمس
  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. تحتاج إلى استخدام com.keytool (من 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 لإنشاء MIDlet الخاص بك مع إيلاء اهتمام خاص لخيارات مسار الفصل ومسار التمهيد (وإلا ستفشل عملية التحقق المسبق).قمت أيضًا بتعيين الهدف على 1.1 والمصدر على 1.3
  2. قم بإنشاء ملف JAD الخاص بك ، والسمات الحرجة في JAD هي Midlet-Jar-url ، و Midlet-Jar-size ، و Midlet-Permissions ، كما قمنا أيضًا بتضمين Midlet-Icon ، وتكوين microedition ، و microedition-profile ، و midlet-name ، midlet-push-1 ، midlet-icon ، midlet-description و midlet-version
  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. الآن لديك جرة موقعة تحتاج إلى تحديث ملف 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}

تعيين

  1. انشر هذا على خادم ويب مع تعيين أنواع MIME بشكل صحيح وقم بتنزيله على هاتفك وسيكون تطبيقًا موثوقًا به لجهة خارجية
  2. يمكنك أيضًا نشر التطبيقات على الهواتف عن طريق إرسال JAR وJAD إلى الهاتف عبر البلوتوث أو الأشعة تحت الحمراء أو كابل حسب ميزات هاتفك.على هواتف Nokia ، تظهر الملفات في صندوق الوارد الرسائل القصيرة الخاصة بك

تثبيت الشهادة على الهاتف

  1. استيراد الشهادة إلى هاتفك ، في Windows XP SP2 يمكنني القيام به هذا عن طريق النقر بزر الماوس الأيمن فوق الملف وتحديد "إرسال إلى جهاز Bluetooth" ، يجب أن تكون قادرا على إرسال الملفات عن طريق الكابل أو الأشعة تحت الحمراء (IR) أيضا.ملحوظة:أنا لم يتم العثور على أي حال من استيراد شهادة على هاتف Series 40
  2. بمجرد تثبيت الشهادة ، يجب أن تكون مصرحًا بها لـ "تثبيت التطبيق".على هاتفي (Nokia 6680) هذا ضمن أدوات-> الإعدادات-> إدارة الشهادات-> إعدادات الثقة ، قمت بتشغيل كل شيء ولكني أعتقد أن "تثبيت التطبيق" هو ​​كل ما تحتاجه

المشاكل الشائعة

  1. التطبيق غير مثبت باستخدام JAD:لا يتم الوثوق بالتطبيق إلا إذا تم تثبيته باستخدام JAD، وسيستمر تثبيت التطبيق من الجرة ولكن لن يكون موثوقًا به.
  2. لم يتم تعيين إعدادات ثقة التطبيق:بمجرد تثبيت تطبيقك، يتعين عليك تحديد مقدار الثقة الذي ستمنحه له (لا يحصل على جميع الأذونات بشكل افتراضي).على هاتف Nokia Series 60، يمكنك العثور عليها ضمن التطبيق.مدير.
  3. شهادة الجذر مفقودة من الهاتف:شهادة Java التي تم التحقق منها و/أو شهادات Verisign مفقودة من بعض الهواتف، تحقق من الأدوات->الإعدادات->إدارة الشهادات للحصول على الشهادة ذات الصلة
  4. فشل التفويض:- هناك مجموعة كاملة من الأسباب المحتملة وراء ذلك، إليك الأسباب التي صادفتها
    1. الشهادة مفقودة من الهاتف، تأكد مرة أخرى من تثبيت شهادتك ومن وضع علامة "موثوقة" عليها لعمليات تثبيت التطبيقات في "إدارة الشهادات".
    2. اعادة التشغيل:قم بإلغاء تثبيت التطبيق بالكامل ثم أعد تشغيل هاتفك، وحاول إخراج البطارية وبطاقة SIM أيضًا، غالبًا ما تتقلب الأمور، خاصة إذا كنت تعيد تثبيت الكثير دون إلغاء التثبيت أولاً
    3. عدم تطابق JAD/JAR:تحقق مرة أخرى من حجم التطبيق في JAD، وتذكر أن عدد البايتات هو المهم وليس الحجم الموجود على القرص
    4. مخبأ المتصفح:إذا كنت تقوم بالتثبيت عبر الهواء، فتأكد من مسح ذاكرة التخزين المؤقت للمتصفح قبل التثبيت
    5. لقد سمعت ولكن لم أتحقق من فواصل الأسطر في MIDlet-Permissions يمكن أن يسبب مشاكل ولكن يبدو أنه مناسب بالنسبة لي على Nokia 6680/6630/6230i (يمكن أن يعتمد على البرامج الثابتة؟)
    6. ال MIDlet-Permissions السمة هي سبب الكثير من المشاكل (خاصة وأن الوثائق غالبًا ما تكون خاطئة/مفقودة أو مختلفة اعتمادًا على الهاتف)، حاول تركها أولاً وإضافة الأذونات واحدة تلو الأخرى.ستشتكي بعض الهواتف من الأذونات التي لا تدعمها، وسيتجاهلها البعض الآخر
  5. يوجد خطأ في بعض البرامج الثابتة المبكرة لجهاز Nokia 6600 يؤدي إلى إيقاف تثبيت MIDlets الموثوق بها
  6. الشهادة غير صالحة بعد:إذا قمت بإنشاء الشهادة بنفسك، فقد يكون لها تاريخ صلاحية يبدأ غدًا، وأيضًا إذا كان تاريخ الكمبيوتر الشخصي والهاتف مختلفين، فقد تكون خارج فترة صلاحية الشهادة
  7. لا توجد إدارة للشهادات على هواتف السلسلة 40، يمكنك تثبيت تطبيق موقع ولكن السلوك غريب مع الشهادات الموقعة ذاتيًا
  8. مشاكل جاد تول:لم أواجه أيًا من هذه المشكلات ولكن الكثير من الأشخاص الآخرين واجهوها
    1. "أواجه مشكلات إذا حاولت استخدام jadtool يدويًا.لدي سلسلة شهادات ولا يبدو أنني أستطيع إضافة الشهادة الثانية إلى ملف JAD باستخدام أي أداة WTK jadtool.لكن الجزء المثير للاهتمام هو أنه يمكنني بنجاح التوقيع على midlet باستخدام أي من واجهات WTK GUI نفسها - حيث يقومون بإضافة الشهادة الثانية بشكل صحيح.خطواتي:
      1. استخدم 1.4.2_06 jarsigner.exe لتوقيع الجرة
      2. استخدم jadtool WTK (2.2 أو 2.3 بيتا) لإضافة شهادة مع 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. "أحاول التوقيع على MIdlet لجهاز Nokia 6620.أنا أستخدم شهادة Verisign Code Signing التي تحتوي في الواقع على شهادتين (المستخدم والمرجع المصدق الوسيط).أنا أستخدم أداة التوقيع WTK 2.2.هل تعرف ما إذا كانت هذه الأداة تدعم شهادتين عند التوقيع؟تتم إضافة التوقيع إلى ملف JAD بشهادتين ولكنني أتلقى خطأً أمنيًا عند التثبيت.لقد قمت بالتحقق من الجهاز وتوجد شهادات جذر مختلفة مثبتة لـ Verisign لكنها ما زالت فاشلة!
    4. "إذا أردت، يمكنك تنزيل مجموعة أدوات تطوير sprintpcs لأنها تدعم الشهادات المزدوجة (http://developer.sprintpcs.com).ومع ذلك، لم أحصل مطلقًا على هذه الشهادة للعمل على هاتف Nokia (6620/cingular)، على الرغم من أنها تعمل على هواتف Sprint (مع تمكين جذر المطور).في النهاية، لم أنجح إلا من خلال إنشاء الشهادة كما هو موضح في هذه المدونة وتثبيتها على الهاتف.من الغريب أنه على الرغم من أن شهادة الجذر الخاصة بشهادتي الموقعة بتوقيع التوقيع كانت موجودة على هاتف 6620، إلا أنها لا تزال لن تقوم بتثبيت MIDlet الخاص بي كما تعتقد."
  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. هناك 4 مجالات ثقة مختلفة في MIDP2 (الشركة المصنعة، والمشغل، وطرف ثالث موثوق به، وغير موثوق به).الطرف الثالث الموثوق به هو الطرف الوحيد الذي يفيدنا حقًا. إنه يوفر الخيارات التالية على جهاز Nokia 6680 (Vodafone UK):
  2. الوصول إلى الشبكة:غير مسموح ، اسأل في كل مرة ، اسأل أول مرة المراسله:غير مسموح به ، اسأل في كل مرة التطبيق بدء التشغيل التلقائي:غير مسموح ، اسأل في كل مرة ، اسأل أول مرة الاتصال:غير مسموح به ، اسأل في كل مرة ، اسأل لأول مرة ، مسموح به دائما الوسائط المتعدده:غير مسموح ، اسأل في كل مرة ، اسأل أول مرة قراءة بيانات المستخدم:غير مسموح به ، اسأل في كل مرة ، اسأل لأول مرة ، مسموح به دائما تعديل بيانات المستخدم:غير مسموح، اسأل في كل مرة، اسأل في المرة الأولى، مسموح دائمًا
  3. يتم تحديد هذه الإعدادات بواسطة المشغل والشركة المصنعة للهاتف، وبالتالي تختلف بين الهاتف والشركة المصنعة والمشغل.

مشاكل لم يتم حلها

  1. تمكنت من توقيع JAD بهذا التنسيق باستخدام الأدوات المساعدة J2ME WTK، ولكن عند محاولة تثبيته على الجهاز، ظهرت لي رسالة "فشلت مصادقة التطبيق 909".

عينة جاد

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

نموذج ملف بناء النمللقد وضعت لدينا EC1M ملف بناء النمل على موقعنا الإلكتروني (نأمل) أن نجعل كل هذا أسهل بالنسبة لك.مصادر أخرىهذا الأسئلة الشائعة في منتدى نوكيا يستحق القراءة.

نصائح أخرى

الخطوة 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.

Step2: أعط معلوماتك لسلطة الشهادة للتحقق.

Step3: سيتم تزويدك بشهادة لتوقيع الرمز.

Step4: تحتاج إلى أسفل الشهادة الوسيطة مع شهادة الجذر.

Step5: الآن سوف يكون لديك 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 )

الخطوة 7: إنشاء keystore من 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

الخطوة الثامنة: ملاحظة: يرجى أخذ النسخ الاحتياطي لملف 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