2013-02-20 5 views
6

मेरे पास एक कस्टम एसएसएल फैक्ट्री है, जहां मैं अपना खुद का ट्रस्टस्टोर लोड करता हूं।एक कुंजीस्टोर कैसे लोड करें, जो संसाधन फ़ोल्डर (मेवेन) के अंदर है?

अब जब मैं truststore.jks परियोजना रूट फ़ोल्डर में फाइल कर दिया है, यह निम्न पंक्ति के साथ काम करता है:

ks.load(new FileInputStream("/truststore.jks", passphrase); 

लेकिन मैं अपने संसाधन फ़ोल्डर, जो Maven साथ बनाया गया था अंदर मेरे truststore चाहते हैं, जहां पथ src/main/संसाधन है।

तब मैं करते हैं और इसे निम्न पंक्ति के साथ काम नहीं करता है:

ks.load(this.getClass().getResourcesAsStream("/truststore.jks"), passphrase); 

हालांकि इनपुट धारा से मौजूद है। मैंने इसे जाँचा था। यह केवल तब विफल रहता है जब मैं ks.load (...) करता हूं।

अपवाद है कि मैं मिलता है:

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty 

कि क्यों है?

सादर, डेव

+0

एक चीज जिसे आप कोशिश कर सकते हैं, दिमाग में आता है। अपने getResourceAsStream में "/truststore.jks" निर्दिष्ट करें ताकि यह क्लासपाथ की रूट से खोज सके। –

+0

मैंने भी कोशिश की, बिना किस्मत के ... –

उत्तर

0

अजीब, यह अब काम करता है ...

मैं था

Properties systemProps = System.getProperties(); 
systemProps.put("javax.net.ssl.trustStore", "/truststore.jks"); 
systemProps.put("javax.net.ssl.trustStorePassword", "changeit"); 
System.setProperties(systemProps); 

और

systemProps.put("javax.net.ssl.trustStore", "src/main/resources/truststore.jks"); 

किसी को भी जानता कि क्यों

को दूसरी पंक्ति बदलते हैं? क्या यह समाधान ठीक है?

+4

यह केवल आपके स्थानीय विकास पर्यावरण में ही काम करेगा। एक बार जब आप अपना आर्टेफैक्ट बनाते हैं, तो पथ 'src/main/resource' अमान्य होगा। – vegemite4me

+1

कृपया एक नया प्रश्न पोस्ट करने के बजाय अपना मूल प्रश्न अपडेट करें –

+0

इस समाधान के साथ इस तथ्य से कोई लेना-देना नहीं है कि ट्रस्टस्टोर एक संसाधन है। आपका उत्तर (जैसा कि मेरे सामने उल्लेख किया गया है) केवल विकास के दौरान काम करता है, इसलिए मैं काम नहीं करता! –

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