2012-08-08 11 views
8

मैं वर्तमान में X509TrustManager को ओवरराइड कर रहा हूं ताकि सभी कर्ट अस्थायी रूप से 'समाधान' (उस पर एक असुरक्षित) के रूप में अनुमति दें। मैं यह समझने की कोशिश कर रहा हूं कि मैं इसमें जोड़ने के बारे में कैसे जाउंगा, इसलिए यह केवल एक विशिष्ट प्रमाण स्वीकार करता है कि मुझे उचित समस्याएं होने तक समस्याएं आ रही हैं (जो इस समय मेरे हाथों से बाहर है)। वर्तमान कोड यहाँ है।X509TrustManager सभी certs की अनुमति के बिना ओवरराइड?

TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() { 
    @Override 
    public java.security.cert.X509Certificate[] getAcceptedIssuers() { 
     return null; 
    } 

    @Override 
    public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) { 
    } 

    @Override 
    public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) { 
    } 
}}; 

try { 
    SSLContext sc = SSLContext.getInstance("SSL"); 
    sc.init(null, trustAllCerts, new java.security.SecureRandom()); 
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); 
} catch (GeneralSecurityException e) { 
    System.out.println(e.getStackTrace()); 
} 
+0

खाली खाली सरणी के बजाय वापस शून्य क्यों करें? spec एक गैर-शून्य सरणी वापस करने के लिए कहते हैं। – Jayen

उत्तर

7

आपको केवल getAcceptedIssuers से प्रमाण पत्र वापस करने की आवश्यकता है। this

InputStream inStream = new FileInputStream("fileName-of-cert"); 
CertificateFactory cf = CertificateFactory.getInstance("X.509"); 
X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream); 
inStream.close(); 

देखें और फिर लौटने कि एक सरणी में विधि

+0

क्या मैं एक ऐसे प्रमाणपत्र से लौटा सकता हूं जो मुझे एक यूआरएल से मिलता है जिसे मैं कनेक्ट करता हूं? अभी, मुझे केवल एक अन्य सर्वर पर किसी अन्य यूआरएल पर जाने पर सर्टिफिकेट त्रुटियां मिलती हैं जो प्रमाणपत्र त्रुटियों को दे रही है। – user1015523

+0

मैंने जो किया है वह ब्राउज़र के माध्यम से साइट से प्रमाण खींचने के लिए ब्राउज़र का उपयोग करता है (जब आप त्रुटि देखते हैं, तो डिस्क पर सहेजने के लिए प्रत्येक प्रमुख ब्राउज़र में एक विकल्प होना चाहिए) और उसके बाद इसे कुंजी में जोड़ें स्टीफनसी के रूप में स्टोर कहता है या फ़ाइल से उपरोक्त कोड का उपयोग करें। उपर्युक्त समाधान थोड़ा कम दर्दनाक हो सकता है (यद्यपि कम लचीला) हालांकि आईआईआरसी उत्पन्न करने वाले कीस्टोरस थोड़ी सी चीज है। – dfb

+1

यदि openssl उपलब्ध है, तो प्रमाणपत्र श्रृंखला कमांड लाइन पर डाउनलोड की जा सकती है: openssl s_client-host www.webservicehost.com -port 443 -Showcerts> output_certificate.crt – IcedDante

0

एक संभावना यह अस्थायी रूप से एक विश्वसनीय प्रमाणपत्र के रूप में अपने JVM के प्रमुख की दुकान में समस्या पैदा करने वाले प्रमाण पत्र को जोड़ने के लिए किया जाएगा के भीतर।

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