2014-07-23 17 views
9

मैं क्लासपाथ से जावा कीस्टोर में .p12 प्रमाण पत्र कैसे आयात कर सकता हूं? सबसे पहले मैंने InstallCert https://code.google.com/p/java-use-examples/source/browse/trunk/src/com/aw/ad/util/InstallCert.java का उपयोग किया और कुछ बदलाव किए ताकि सर्वर प्रमाण पत्र जावा इंस्टॉल निर्देशिका में कीस्टोर में आयात किया जाएगा। यह ठीक काम करता है लेकिन अब मैं अपने क्लासपाथ से प्रमाणपत्र लोड करना चाहता हूं।प्रोग्रामेटिक रूप से आयात .cer प्रमाणपत्र में keystore

संपादित करें: मैं सिर्फ एक .cer प्रमाणपत्र का उपयोग, अगले जवाब

+0

जैसा कि आपने अपना खुद का प्रश्न हल किया है, आपको इसे एक उत्तर के रूप में रखना चाहिए। इससे मेरी मदद मिली क्योंकि यह एक मुद्दा है कि मुझे निकट भविष्य में सौदा करना होगा। तो यह दूसरों की मदद कर सकता है। –

+0

ठीक है, दूसरों की मदद करने में खुशी :) – Pali

उत्तर

18

देखने जवाब:

InputStream certIn = Certificates.class.getResourceAsStream("/package/myCert.cer"); 
:

InputStream certIn = ClassLoader.class.getResourceAsStream("/package/myCert.cer"); 

    final char sep = File.separatorChar; 
    File dir = new File(System.getProperty("java.home") + sep + "lib" + sep + "security"); 
    File file = new File(dir, "cacerts"); 
    InputStream localCertIn = new FileInputStream(file); 

    KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); 
    keystore.load(localCertIn, passphrase); 
    if (keystore.containsAlias("myAlias")) { 
     certIn.close(); 
     localCertIn.close(); 
     return; 
    } 
    localCertIn.close(); 

    BufferedInputStream bis = new BufferedInputStream(certIn); 
    CertificateFactory cf = CertificateFactory.getInstance("X.509"); 
    while (bis.available() > 0) { 
     Certificate cert = cf.generateCertificate(bis); 
     keystore.setCertificateEntry("myAlias", cert); 
    } 

    certIn.close(); 

    OutputStream out = new FileOutputStream(file); 
    keystore.store(out, passphrase); 
    out.close(); 

जावा वेब शुरू करने के लिए न classloader का उपयोग, कक्षा itselfe का उपयोग

+0

+1 यह बढ़िया है! :) –

+0

बहुत बहुत धन्यवाद :) – Pali

+1

किसी भी संकेत से पहुंच के बारे में समस्या को हल करने का कोई संकेत नहीं है? (हालांकि मैं व्यवस्थापक हूं) java.io.FileNotFoundException: सी: \ प्रोग्राम फ़ाइलें (x86) \ जावा \ jre1.8.0_45 \ lib \ security \ cacerts (एक्सेस अस्वीकार कर दिया गया है) – lumo

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