2010-08-17 21 views
13

जावा वेब प्रारंभ (JWS) का कहना है कि यह मेरे आवेदन शुरू नहीं कर सकते क्योंकि जार फ़ाइल अहस्ताक्षरित है:जावा वेब स्टार्ट का कहना है कि एक हस्ताक्षरित जार फ़ाइल क्यों हस्ताक्षरित है?

Error: Unsigned application requesting unrestricted access to system 
     Unsigned resource: .../dynaccn.jar 

लेकिन जार फ़ाइल पर हस्ताक्षर किए है:

$ jarsigner -keystore ... dynaccn.jar idv 
$ jar tf dynaccn.jar 
META-INF/MANIFEST.MF 
META-INF/IDV.SF 
META-INF/IDV.RSA 
META-INF/ 
edu/ 
edu/ucar/ 
edu/ucar/unidata/ 
edu/ucar/unidata/dynaccn/ 
App$1.class 
... 
$ jarsigner -verbose -certs -verify dynaccn.jar 
     28325 Tue Aug 17 09:41:58 MDT 2010 META-INF/MANIFEST.MF 
     28404 Tue Aug 17 09:41:58 MDT 2010 META-INF/IDV.SF 
     2880 Tue Aug 17 09:41:58 MDT 2010 META-INF/IDV.RSA 
      0 Tue Aug 17 09:41:58 MDT 2010 META-INF/ 
      0 Mon Aug 16 10:10:34 MDT 2010 edu/ 
      0 Mon Aug 16 10:10:34 MDT 2010 edu/ucar/ 
      0 Mon Aug 16 10:10:34 MDT 2010 edu/ucar/unidata/ 
      0 Mon Aug 16 10:10:34 MDT 2010 edu/ucar/unidata/dynaccn/ 
... 
sm  486 Mon Aug 16 10:10:34 MDT 2010 App$1.class 

     X.509, CN=University Corporation for Atmospheric Research, OU=UNIDATA, O=University Corporation for Atmospheric Research, L=Boulder, ST=Colorado, C=US 
     [certificate will expire on 2/6/11 4:59 PM] 
     X.509, CN=Thawte Code Signing CA, O=Thawte Consulting (Pty) Ltd., C=ZA 
     [certificate is valid from 8/5/03 6:00 PM to 8/5/13 5:59 PM] 
     [KeyUsage extension does not support code signing] 
     X.509, [email protected], CN=Thawte Premium Server CA, OU=Certification Services Division, O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA 
     [certificate is valid from 7/31/96 6:00 PM to 12/31/20 4:59 PM] 
     [CertPath not validated: null] 
... 
jar verified. 

Warning: 
This jar contains entries whose signer certificate's KeyUsage extension doesn't allow code signing. 
This jar contains entries whose signer certificate will expire within six months. 
This jar contains entries whose certificate chain is not validated. 
This jar contains signed entries that's not signed by alias in this keystore. 

और दोनों JWS और मेरे ब्राउज़र में "थॉवे प्रीमियम सर्वर सीए" का प्रमाण पत्र है।

समस्या तब होती है जब जेडब्ल्यूएस कैश और ब्राउज़र डाउनलोड क्षेत्र खाली होता है।

मुझे विश्वास नहीं है कि "KeyUsage" संदेश प्रासंगिक है क्योंकि 1) एक ही प्रमाणपत्र श्रृंखला का उपयोग दूसरे एप्लिकेशन के लिए किया जाता है जो सफलतापूर्वक लॉन्च करता है; और 2) दस्तावेज मैंने पढ़ा है इंगित करता है कि थॉवेट कोड साइनिंग सीए का उपयोग केवल यूआईआईडीएटीए प्रमाण पत्र को सत्यापित करने के लिए किया जाता है और कोड पर हस्ताक्षर नहीं किया जाता है।

मेरा पर्यावरण लिनक्स 2.6.27.41-170.2.117.fc10.x86_64, फ़ायरफ़ॉक्स 3.6.8 (i686), और जावा 1.7.0-एए है।

यह एप्लिकेशन लॉन्च क्यों नहीं करेगा?

अद्यतन: मुझे पता चला है कि एप्लिकेशन लॉन्च होता है यदि जेएनएलपी फ़ाइल में "कोडेबेस" विशेषता एक स्थानीय निर्देशिका का संदर्भ देती है, लेकिन यदि यह उपयोगकर्ता प्रमाणीकरण के पीछे एक यूआरएल का संदर्भ नहीं देती है। बाद के मामले में, जावा (1) कमांड लाइन से आने पर जेएनएलपी फ़ाइल (स्पष्ट परिणामों के साथ) के रूप में प्रमाणीकरण वेबपृष्ठ की व्याख्या करता है। यदि उपयोगकर्ता-प्रमाणीकरण वेबपृष्ठ से "तैनाती जावा" स्क्रिप्ट द्वारा बुलाया जाता है (ताकि ब्राउज़र में सत्र कुकी हो), तो जावा (1) कहता है कि एप्लिकेशन पर हस्ताक्षर नहीं है। मुझे लगता है कि इन दोनों विफलता मोडों में अजीब बात है क्योंकि javaws (1) प्रलेखन का कहना है कि यह उपयोगकर्ता को वेब पृष्ठों को प्रमाणीकृत करने के लिए समझता है और जार फ़ाइल पर हस्ताक्षर किए जाते हैं।

+1

आप अपनी जार फ़ाइल कैसे साइन कर रहे हैं? चींटी में साइनजर कार्य का उपयोग करते समय मैंने इस तरह की समस्याओं का अनुभव किया है जहां आलसी विशेषता सत्य पर सेट की गई थी। 'आलसी = सत्य' विशेषता को हटाने से समस्याएं दूर हो गईं। – Pram

+0

@Pram मैं इस चींटी (1) प्रविष्टि का उपयोग करता हूं: । "आलसी" विशेषता का उपयोग नहीं किया जाता है। –

उत्तर

3

मैं जेनेटू लिनक्स पर हूं, ओपनजेडीके 7 चला रहा हूं, और मुझे लगता है कि मुझे एक ही समस्या का अनुभव हुआ।

मैं इसे ओपनजेडीके 7 के साथ काम करने के लिए नहीं मिला। केवल सूर्य जावा 6 जेडीके की रिलीज के साथ फिर से हस्ताक्षर करने से अंततः एप्लिकेशन को सही तरीके से हस्ताक्षर किया गया। (मैंने इसे एंटी द्वारा प्रबंधित किए जाने के कारण भी इसे फिर से बनाया है, मुझे नहीं पता कि यह आवश्यक है या नहीं)।

पुनर्निर्माण के बिना केवल आधिकारिक जेडीके 6 पर स्विच करने से केवल "[सर्टपाथ मान्य नहीं: शून्य]" चेतावनी देता है जब "jarsigner -verify -verbose -certs" के साथ विविधता गायब हो जाती है, लेकिन मैं एप्लिकेशन में काम नहीं कर पाता हूं। अंत में उपयोग करें।

2
  1. सुनिश्चित करें कि आप जार के कैश किए गए (हस्ताक्षरित) संस्करण का उपयोग नहीं कर रहे हैं। जहां JWS downloads jars
  2. सुनिश्चित करें कि सभी निर्भरता अपने जार के (जार), कि विशेष अनुमति की आवश्यकता है, यह भी प्रवेश किया हुआ है
+0

समस्या तब होती है जब जेडब्ल्यूएस कैश खाली होता है। केवल एक जार फ़ाइल है और इसमें केवल कक्षाएं हैं। –

0

सुनिश्चित करें कि आप एक doPrivileged ब्लॉक के साथ एप्लेट में अपने कॉल लपेट बनाने बनाने के अस्थायी फ़ोल्डर को साफ करें। मुझे यकीन नहीं है कि यह ऐसा क्यों काम करता है लेकिन एक आकर्षण की तरह काम करता है।

+0

एप्लिकेशन अकेले है: यह एक एप्लेट नहीं है। –

संबंधित मुद्दे