दिलचस्प पोस्ट
java.io.FileNotFoundException: (प्रवेश निषेध है) मैक से जावा 8 जेडीके को निकालना मैं स्थानीय जीआईटी शाखा का नाम कैसे बदलूं? शीर्ष स्तर के क्वालिफायर क्या हैं? Google Play जैसे एक्शनबारे को कैसे बनाएं, जब स्क्रॉल करने पर फ़ेड हो जाता है PHP से HTML ईमेल भेजा जा रहा है तर्कों की संख्या पर मैक्रो ओवरलोडिंग EC2 टी 2। मीडिया फोर्स्टेबल क्रेडिट "बचत" कैलक्यूएशन मुझे थ्रेड-सेफ़ संग्रह संग्रह कहां मिल रहा है? मैं कमांड प्रॉम्प्ट में रिक्त स्थान का उपयोग कैसे करूं? मैट ओएस एक्स पर गीत और यूमलॉट समस्या स्थिति: तय आईपैड और आईफोन पर काम नहीं करता है JQuery: रिसाइज़ इवेंट को कैसे कॉल करें, केवल एक बार इसे पूर्ण होने के बाद रीसाइज किया जाए? पायथन का उपयोग करके HTML को पार्स करना प्रत्येक 5 सेकंड में AJAX jQuery ताज़ा डीएवी

जावा – की समय सीमा समाप्त एसएसएल प्रमाण पत्र की अनदेखी करें

URL myUrl = new URL("https://www....."); 

वेबसाइट का SSL प्रमाणपत्र समाप्त हो गया है। इसे कैसे से बचें और यूआरएल () काम करें?

वेब के समाधान से एकत्रित समाधान "जावा – की समय सीमा समाप्त एसएसएल प्रमाण पत्र की अनदेखी करें"

आपको एक TrustManager बनाना चाहिए जो डिफ़ॉल्ट ट्रस्ट प्रबंधक को लपेटता है, CertificiateExpiredException पकड़ता है और इसे अनदेखा करता है

नोट: जैसा कि इस उत्तर में विस्तृत है, यह सुरक्षित है या नहीं, बहुत कार्यान्वयन निर्भर है। विशेष रूप से, यह दिनांक सत्यापन पर निर्भर करता है, जो पिछली बार किया जा रहा है, उसके बाद सब कुछ ठीक से जांच कर दिया गया है।

इन पंक्तियों के साथ कुछ काम करना चाहिए:

 TrustManagerFactory tmf = TrustManagerFactory.getInstance( TrustManagerFactory.getDefaultAlgorithm()); // Initialise the TMF as you normally would, for example: tmf.init((KeyStore)null); TrustManager[] trustManagers = tmf.getTrustManagers(); final X509TrustManager origTrustmanager = (X509TrustManager)trustManagers[0]; TrustManager[] wrappedTrustManagers = new TrustManager[]{ new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return origTrustmanager.getAcceptedIssuers(); } public void checkClientTrusted(X509Certificate[] certs, String authType) { origTrustmanager.checkClientTrusted(certs, authType); } public void checkServerTrusted(X509Certificate[] certs, String authType) { try { origTrustmanager.checkServerTrusted(certs, authType); } catch (CertificateExpiredException e) {} } } }; SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, wrappedTrustManagers, null); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); 

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

आपको एक कस्टम X509 वैदिकक बनाना होगा जो समाप्त हो चुके प्रमाणपत्रों को अनदेखा कर देगा। वास्तव में, कोई भी जांच नहीं की जाएगी।

यहां से लिया गया कोड: http://exampledepot.com/egs/javax.net.ssl/TrustAll.html

 // Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted( java.security.cert.X509Certificate[] certs, String authType) { } public void checkServerTrusted( java.security.cert.X509Certificate[] certs, String authType) { } } }; // Install the all-trusting trust manager try { SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); } catch (Exception e) { } // Now you can access an https URL without having the certificate in the truststore // It should work with expired certificate as well try { URL myUrl = new URL("https://www....."); } catch (MalformedURLException e) { } 

मैंने इस समस्या को हल करने के लिए कस्टम ट्रस्ट मैनेजर लिखा था, आप इसे https://gist.github.com/divergentdave/9a68d820e3610513bd4fcdc4ae5f91a1 पर देख सकते हैं। यह ट्रस्टमैनेजर अन्य क्लास में अपमानजनक X509 प्रमाण पत्र को लपेटता है ताकि सभी अन्य मान्यताओं को जगह में छोड़कर समाप्ति की जांच को अक्षम किया जा सके। (अर्थात मेजबाननाम से मेल खाता है, एक विश्वसनीय CA के लिए चेन, मान्य हस्ताक्षर आदि)