سؤال

أحتاج إلى توقيع تطبيق Android (.apk).
أملك .pfx ملف. لقد حولته إلى .cer ملف عبر Internet Explorer ثم تم تحويله .cer ل .keystore باستخدام keytool. ثم حاولت التوقيع .apk مع Jarsigner لكنها تقول أن. Keystore لا يكتفي بمفتاح خاص.

ماذا أفعل خطأ؟

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

المحلول

باستخدام JDK 1.6 أو أحدث

وقد أشار جاستن في التعليقات أدناه أن KeyTool وحدها قادر على القيام بذلك باستخدام الأمر التالي (على الرغم من أنه فقط في JDK 1.6 وبعد ذلك):

keytool -importkeystore -srckeystore mypfxfile.pfx -srcstoretype pkcs12 
-destkeystore clientcert.jks -deststoretype JKS

باستخدام JDK 1.5 أو أدناه

OpenSSL يمكن أن تفعل كل شيء. هذه الإجابة على jguru هي أفضل طريقة وجدتها حتى الآن.

أولا تأكد من أن لديك OpenSSL المثبتة. تم تثبيت العديد من أنظمة التشغيل بالفعل كما وجدت مع Mac OS X.

يقوم الأمران التاليان بتحويل ملف PFX إلى تنسيق يمكن فتحه كمتجر مفتاح Java PKCS12:

openssl pkcs12 -in mypfxfile.pfx -out mypemfile.pem
openssl pkcs12 -export -in mypemfile.pem -out mykeystore.p12 -name "MyCert"

لاحظ أن الاسم المقدم في الأمر الثاني هو الاسم المستعار للمفتاح الخاص بك في متجر المفاتيح الجديد.

يمكنك التحقق من محتويات متجر المفاتيح باستخدام الأداة المساعدة Java Keytool مع الأمر التالي:

keytool -v -list -keystore mykeystore.p12 -storetype pkcs12

أخيرًا ، إذا كنت بحاجة إلى تحويل هذا إلى متجر مفاتيح JKS عن طريق استيراد متجر المفاتيح الذي تم إنشاؤه أعلاه إلى متجر مفاتيح جديد:

keytool -importkeystore -srckeystore mykeystore.p12 -destkeystore clientcert.jks -srcstoretype pkcs12 -deststoretype JKS

نصائح أخرى

يمكن لـ JarSigner استخدام ملف PFX الخاص بك كحرف Keystore لتوقيع جرة. تأكد من أن ملف PFX الخاص بك يحتوي على المفتاح الخاص وسلسلة شهادة عند تصديره. ليست هناك حاجة للتحويل إلى تنسيقات أخرى. الحيلة هي الحصول على الاسم المستعار من ملف PFX الخاص بك:

 keytool -list -storetype pkcs12 -keystore your_pfx_file -v | grep Alias

بمجرد أن تحصل على الاسم المستعار ، يكون التوقيع سهلًا

jarsigner.exe -storetype pkcs12 -keystore pfx_file jar_file "your alias"

سيطالبك الأوامران أعلاه بكلمة المرور التي حددتها في PFX Export. إذا كنت تريد أن تسكع كلمة المرور الخاصة بك في نص واضح ، فاستخدم -ستور التبديل قبل -keystore تحول

بمجرد التوقيع ، معجب بعملك:

jarsigner.exe -verify -verbose -certs  yourjarfile

وجدت هذه الصفحة التي تخبرك بكيفية استيراد PFX إلى JKS (java Key Store):

keytool -importkeystore -srckeystore PFX_P12_FILE_NAME -srcstoretype pkcs12 -srcstorepass PFX_P12_FILE -srcalias SOURCE_ALIAS -destkeystore KEYSTORE_FILE -deststoretype jks -deststorepass PASSWORD -destalias ALIAS_NAME

يجب أن يحتوي ملف PFX الخاص بك على المفتاح الخاص داخله. قم بتصدير المفتاح الخاص والشهادة مباشرة من ملف PFX الخاص بك (على سبيل المثال باستخدام OpenSSL) واستيرادها إلى Java Keystore.

تعديل

مزيد من المعلومات:

  • تنزيل openssl لنظام التشغيل Windows هنا.
  • تصدير المفتاح الخاص: openssl pkcs12 -in filename.pfx -nocerts -out key.pem
  • شهادة التصدير: openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem
  • استيراد المفتاح الخاص والشهادة في Java Keystore باستخدام keytool.

جاستن (أعلاه) دقيق. ومع ذلك ، ضع في اعتبارك أنه بناءً على من تحصل على الشهادة من (CA الوسيطة ، CA الجذور المعنية أم لا) أو كيف يتم إنشاء/تصدير PFX ، في بعض الأحيان يمكن أن تفتقد سلسلة الشهادة. بعد الاستيراد ، سيكون لديك شهادة من نوع brivatekeyentry ، ولكن مع سلسلة طولها 1.

لإصلاح هذا ، هناك العديد من الخيارات. الخيار الأسهل في ذهني هو استيراد وتصدير ملف PFX في IE (اختيار خيار تضمين جميع الشهادات في السلسلة). يجب أن تكون عملية الاستيراد والتصدير للشهادات في IE سهلة للغاية وموثقة جيدًا في مكان آخر.

بمجرد تصديرها ، استيراد keystore كما أشار جوستين أعلاه. الآن ، سيكون لديك مفاتيح مع شهادة من النوع الخاص وبطول سلسلة شهادة تزيد عن 1.

بعض خطأ عملاء خدمة الويب المستندة إلى .NET (غير قادر على إنشاء علاقة ثقة) ، إذا لم تفعل ما سبق.

إذا كنت تعمل مع JDK 1.5 أو أسفل الأداة المساعدة ، فلن يكون لدى keytool -importkeystore الخيار (انظر JDK 1.5 وثائق KeyTool) وسيكون الحل بواسطة Miked متاحًا فقط عن طريق نقل .pfx على آلة مع JDK الأحدث (1.6 أو أعلى).

خيار آخر في JDK 1.5 أو أدناه (إذا كان لديك منتج Oracle WebLogic) ، هو اتباع الإرشادات الواردة من مستند Oracle هذا: باستخدام تنسيقات شهادة PFX و PEM مع keystores. يصف التحويل إلى .pem التنسيق ، كيفية استخراج شهادات المعلومات من هذا التنسيق النصي ، واستيرادها إلى .jks تنسيق مع java utils.ImportPrivateKey فائدة (هذه هي الأداة المتضمنة مع منتج WebLogic).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top