2012-07-23 3 views
8

के साथ X.50 9 प्रमाण पत्र पढ़ना मैं बाहरी पार्टी से प्राप्त प्रमाणपत्र को पढ़ने के लिए जावा का उपयोग करने का प्रयास कर रहा हूं। कोड निम्न त्रुटि फेंक है:जावा

java.lang.RuntimeException: java.security.cert.CertificateException: Unable to initialize, java.io.IOException: extra data given to DerValue constructor

कोड:

FileInputStream ksfis = new FileInputStream(this.getCertificateFile()); 
ksbufin = new BufferedInputStream(ksfis); 
certificate = (X509Certificate) 
    CertificateFactory.getInstance("X.509").generateCertificate(ksbufin); 

यकीन है कि समस्या नहीं कोड में, मैं एक स्व-हस्ताक्षरित प्रमाणपत्र बनाया गया और कोड के साथ इस्तेमाल किया गया था बनाने के लिए, और यह ठीक काम किया। मैंने सिस्टम कुंजी श्रृंखला में दोनों प्रमाण पत्र स्थापित किए हैं, और वे दोनों मान्य हैं। मैं एक मैक और जावा 1.6 का उपयोग कर रहा हूँ।

कोई विचार है कि जब मैं बाहरी पार्टी प्रमाणपत्र लोड करता हूं तो मुझे उपरोक्त अपवाद क्यों मिलता है? क्या आपको लगता है कि यह स्थानांतरण के दौरान दूषित हो गया है? यदि ऐसा होता है, तो इसे स्थानीय सिस्टम पर मान्य नहीं दिखाना चाहिए, है ना? इस openssl का उपयोग कर टाइप करने के लिए

+0

यदि आप इसे टेक्स्ट एडिटर में खोलते हैं, तो क्या यह टेक्स्ट या कचरा दिखाता है? –

+0

मैंने टेक्स्ट एडिटर में अपना खोला और उसका पूरा कचरा खोला और तीसरे पक्ष में BEGIN सर्टिफिकेट और ईएनडी सर्टिफिकेट टेक्स्ट और इन दोनों सिरों के अंदर सामग्री == (बेस 64 एन्कोडेड?) – Java

+0

के साथ अच्छी तरह व्यवस्थित जंक है, अच्छी तरह से ' ---- स्टार्ट सर्टिफिकेट ----- \ n आधार 64 जंक \ n ----- अंत प्रमाण पत्र ----- 'मुझे लगता है? –

उत्तर

6

प्रयास करें, और उसके बाद परिणाम आयात:

openssl x509 -outform der -in certificate.pem -out certificate.der 

या हल्के एपीआई में जावा Bouncy कैसल कार्यक्षमता का उपयोग:

http://www.bouncycastle.org/docs/pkixdocs1.5on/org/bouncycastle/openssl/PEMReader.html

आप परिणाम सांकेतिक शब्दों में बदलना कर सकते हैं फिर से और फिर जेसीई परिभाषित प्रमाणपत्र प्राप्त करने के लिए जावा में डिफ़ॉल्ट प्रमाणपत्रबिल्डर का उपयोग करें।

+0

एफडब्ल्यूआईडब्ल्यू, बाउंसीकास्टल लाइटवेट एपीआई ने मुझे एक बहुत ही त्रुटि दी। – cmbaron

+0

सभी प्रमाण पत्र बराबर नहीं बनाए गए हैं, @cmbaron, मैंने कई एन्कोडिंग त्रुटियां देखी हैं। यदि आप सुनिश्चित हैं कि आपका कोड काम करना चाहिए (बाउंसी मेलिंग सूची से पूछें) तो यह आपका प्रमाण पत्र भी हो सकता है। –