2013-06-25 9 views
7

मुझे सेब पुश सेवाओं से कनेक्ट करने के लिए उपयोग किए जा रहे जेनरेट किए गए प्रमाणपत्र के साथ समस्याएं आ रही हैं। जब उत्पन्न p12 फ़ाइल मेरी src/मुख्य/जावा फ़ोल्डर में था सभी ठीक काम करता है, लेकिन मैं इसे src/मुख्य/संसाधनों में ले जाया गया है और यह निम्न त्रुटि के साथ काम करना बंद करने का फैसला किया:जेनरेट सर्टिफिकेट संसाधन फ़ोल्डर में स्थानांतरित होने पर काम करना बंद कर देता है

DerInputStream.getLength(): lengthTag=111, too big. 

में प्राप्त करने के लिए कुछ और विवरण: मैं नोटपॉप पुश अधिसूचना लाइब्रेरी का उपयोग कर रहा हूं और प्रमाणपत्र उत्पन्न करने के लिए रे वेंडरलिच से ट्यूटोरियल का पालन करता हूं।

openssl x509 -in aps_development.cer -inform DER -out aps_development.pem -outform PEM 
openssl pkcs12 -nocerts -in single.p12 -out single.pem 
openssl pkcs12 -export -inkey single.pem -in aps_development.pem -out dual.p12 

उसके बाद मैं अपने जावा परियोजना में dual.p12 चले गए: के बाद, मैं जावा में उपयोग के लिए p12 फ़ाइल उत्पन्न करने के लिए निम्न कमांड के लिए इस्तेमाल किया। सबसे पहले फ़ाइल मेरे/src/main/java फ़ोल्डर में थी, com.company.push.certificates पर कहें (जबकि फ़ाइल का अनुरोध करने वाला कोड com.company.push पर है)। मैं विकास में

InputStream stream = this.getClass().getResourceAsStream("certificates/dual.p12"); 

यह काम कर ठीक का उपयोग करके एक InputStream का अनुरोध नहीं, बल्कि जब परियोजना का निर्माण (Maven का उपयोग), thats क्यों मैं संसाधन फ़ोल्डर में संसाधन ले जाया गया, ठीक उसी पैकेज का उपयोग। संसाधन अभी भी मिलता है, लेकिन अब मुझे ऊपर उल्लिखित java.io.IOException

कोई भी जानता है कि इसका कारण क्या हो सकता है?

Ps: जब मैं फ़ाइल को वापस src/main/java में पैकेज में ले जाता हूं, तो सभी ठीक काम करता है, इसलिए प्रमाणपत्र मान्य होना प्रतीत होता है।

उत्तर

18

निर्माण के बाद प्रमाणपत्र फ़ाइल की सामग्री की जांच करें, जब मैवेन ने लक्ष्य/कक्षाओं में प्रतिलिपि बनाई है ... संभवतः मैवेन संसाधन फ़िल्टरिंग, या आपके निर्माण में कुछ और फ़ाइल को संशोधित कर रहा है। सत्यापित करें कि कक्षा फ़ोल्डर में क्या होता है, वही है जो संसाधन फ़ोल्डर में मौजूद है।

http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

+0

मैं एक बेवकूफ की तरह महसूस मैं इस अपने आप को ... इस समस्या लगती जाँच नहीं किया। कम से कम किसी तरह में। विकास करते समय मैं एक स्थानीय जब्स उदाहरण का उपयोग करता हूं, मैंने फाइल निर्देशिका में फ़ाइल की जांच की, ऐसा लगता है कि वास्तव में फ़ाइल के साथ कुछ गड़बड़ है।ऐसा लगता है कि एक अलग एन्कोडिंग (यूटीएफ -8) भी है, इसलिए मुझे लगता है कि इसे बाइनरी फ़ाइल के बजाय टेक्स्ट फ़ाइल के रूप में माना जाता था। मेरे द्वारा इसे कैसे रोका जा सकता है? –

+0

ठीक है, किसी कारण से jboss सामग्री के बावजूद, .p12 फ़ाइलों के साथ गड़बड़ करने के लिए मजाकिया लगता है। * .p12.cert पर फ़ाइल का नाम बदलने के लिए पर्याप्त 'ठीक' लगता है, हालांकि मुझे बहुत खुश नहीं करता है :( –

11

इसका कारण यह है Maven के संसाधन को छानने अपने p12 फ़ाइल को भ्रष्ट कर रहा है हो रहा है।

<resources> 
    <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
     <excludes> 
      <exclude>**/*.p12</exclude> 
     </excludes> 
    </resource> 
    <resource> 
     <directory>src/main/resources</directory> 
     <filtering>false</filtering> 
     <includes> 
      <include>**/*.p12</include> 
     </includes> 
    </resource> 
</resources> 
7

व्यक्तिगत तौर पर मैं Maven निर्माण में शामिल नहीं/शामिल अनुभाग डुप्लिकेट करने और दो होने पसंद नहीं है:

हम pom.xml में इस के साथ छानने Maven संसाधन से p12 फ़ाइलों को निकालते हुए ऐसा हल संसाधन खंड जिन्हें सिंक में रखा जाना चाहिए - इसलिए मैं इसके बजाय nonFilteredFileExtensions को कॉन्फ़िगर करने के लिए मेवेन संसाधन प्लगइन का उपयोग करना पसंद करता हूं।

निर्माण अनुभाग में संसाधन अनुभाग तो बस है (और अन्य विशिष्ट आपको आवश्यकता हो सकती शामिल है):

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-resources-plugin</artifactId> 
     <version>2.7</version> 
     <configuration> 
      <delimiters> 
       <delimiter>@</delimiter> 
      </delimiters> 
      <nonFilteredFileExtensions> 
       <nonFilteredFileExtension>p12</nonFilteredFileExtension> 
       <nonFilteredFileExtension>pfx</nonFilteredFileExtension> 
       <nonFilteredFileExtension>pem</nonFilteredFileExtension> 
      </nonFilteredFileExtensions> 
     </configuration> 
    </plugin> 
:

<resources> 
    <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
    </resource> 
</resources> 

Maven-संसाधन-प्लगइन जो फ़ाइलें नहीं जब सहित फिल्टर करने के लिए बताएँ

देखें: http://maven.apache.org/plugins/maven-resources-plugin/examples/binaries-filtering.html

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