غير الموقعة الموارد جرة في JNLP من قبل نفس الشهادة

StackOverflow https://stackoverflow.com/questions/430755

  •  08-07-2019
  •  | 
  •  

سؤال

ولقد تم العمل مع شبكة الإنترنت تبدأ لبضع سنوات حتى الآن ولديهم خبرة مع التوقيع على الجرار وليس ما. إنني آخذ أول محاولة لي في نشر التطبيق RCP مع بداية على شبكة الإنترنت وعلى الرغم من أنني قد في الواقع وقعت كل من الجرار مع نفس الشهادة وأظل الحصول على هذا الخطأ: 'الموارد جرة في JNLP لم يتم توقيعها من قبل نفس الشهادة'

لقد جاء أي شخص آخر في هذا؟ إذا كان الأمر كذلك، أي أفكار حول كيفية إصلاح؟

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

المحلول

وعندما أتيحت لي مشاكل مماثلة بعد التحقق من الجرار اتضح أن بعض جرة 3rd الطرف وقعت من قبل شخص آخر.

ويجب إنشاء ملف JNLP منفصل عن الجرار التي وقعتها شهادة أخرى وقراءة هذا JNLP من ملف JNLP الخاص بك:

<resources>
  ...
  <extension name="other" href="other.jnlp"/>
</resources>

هنا أو <وأ href = "http://www.java.net /blogs/kirillcool/archive/deployment/index.html "يختلط =" noreferrer "> هنا يمكنك العثور على مثال على ذلك.

نصائح أخرى

وهذا قد يكون دخول واضح لا معنى لها من جرة وقعت بالفعل أن تستخدم كمكتبة. واجهت هذه المشكلة مع jogl عبر webstart و. جرب هذا:

وبفك كل الجرار، وتطهير جميع META-INF الدلائل، جرة والتوقيع عليها مرة أخرى.

ولقد وجدت أن JNLP / webstart ولا يحب توقيعات متعددة / توقيع عبر jarsigner.exe لJAR معين. إذا تم توقيع JAR مثل BouncyCastle (التي تأتي presigned) مرة أخرى مع شهادة شركتك، الفحص البصري يقودني إلى الاعتقاد بأن شهادة وتواقيع جديدة يتم تنفيذها بشكل صحيح في JAR. ولكن هذا قد يكون JNLP قراءة فقط أول توقيع (أبجدي؟) في META-INF، وبالتالي تشكو أنها لا تطابق الجرار الأخرى (التي لديها واحد فقط، والشركات، والتوقيع على كل JAR).

وكان لي نفس التجربة بالضبط كما وصفها ماثيو مع الجرار BouncyCastle presigned. ومع ذلك، وجدت أن JRE النسخة 1.6.0_14 وبعد ذلك سوف نقبل الجرار مع توقيعات متعددة (كما أتوقع). وبالتالي، لم أكن بحاجة إلى استخدام JNLP "آلية تمديد المكون" هو موضح أعلاه.

وPS لم يجد أي إشارات واضحة لهذا الإصلاح في ملاحظات الإصدار 1.6.0_14. ومع ذلك، لقد تحققت من أن العديد من الجرار وقعت تعمل في كافة إصدارات لاحقة (لا يقل عن 14 - 17 + 24).

واطلع على تفسير واحد من التعليمات: <لأ href = "http://docs.oracle.com/javase/8/docs/technotes/guides/javaws/developersguide/faq.html#s213" يختلط = " نوفولو "> كيف يمكنني استخدام ملفات JAR متعددة وقعه شهادات مختلفة؟

والحل الصحيح.

في مشروعي، ما حدث هو أن هناك زوجين من الحالات في التجمع موازن التحميل، وهناك بعض الحالات مع نسخة قديمة من رمز وبعض مع الإصدار الجديد. وبالتالي هناك شهادات لم توقع من قبل نفس الشهادة ...

ويسرد النصي التالي الرقم التسلسلي للشهادة RSA في كل جرة في / بعض / الدليل ليب ويساعد على إيجاد الجرار التي تم توقيعها من قبل شهادة خاطئة:

for f in $( find /some/lib -type f -name '*.jar' )
do 
   serial=$( unzip -p $f 'META-INF/*.RSA' | 
             openssl pkcs7 -inform der -print -noout |
             grep --max-count=1 serialNumber | cut -d: -f2- | tr -d ' ' )
   printf "%40s: %s\n" "$serial" "$f"
done
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top