2010-07-02 15 views
6

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

फिलहाल मुझे एक जावा विश्वसनीय भरोसेमंद जारीकर्ता से वाइल्डकार्ड प्रमाणपत्र खरीदने के लिए एक दुविधा का सामना करना पड़ रहा है या प्रति उप-डोमेन में एकाधिक कैर्ट खरीदते हैं।

क्या अन्य भाषाओं में भी एक ट्रस्टस्टोर है? यदि ऐसा है तो क्या किसी को पता है कि वाइल्डकार्ड प्रमाणपत्र उनके साथ भी काम करते हैं या नहीं।

+0

इसकी जानकारी का एक अच्छा टुकड़ा पर काम करता है और यह मेरे लिए उपयोगी था गए हैं। – Allen

+1

वाइल्डकार्ड एसएसएल सभी प्रमाण पत्रों पर भरोसा करने जैसा ही नहीं है। वाइल्डकार्ड एसएसएल * .domain.com है। यह प्रश्न दूसरे प्रश्न की तुलना में 4 साल पुराना है। अगर आप चाहें तो इसे बंद करें लेकिन यह वही बात नहीं है। – Wes

उत्तर

2

मैं जावा 6.

के साथ इस प्रयास किया है यह सही ढंग से काम करने के लिए प्रकट होता है। मैंने एक फाइल से हेडर और बॉडी कंटेंट सफलतापूर्वक पढ़ा है जिसमें वाइल्डकार्ड एसएसएल प्रमाणपत्र था।

package com.example.test; 

import java.io.DataInputStream; 
import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.net.URLConnection; 
import java.util.Iterator; 
import java.util.List; 
import java.util.Map; 
import java.util.Map.Entry; 


public class SSLTEST { 
    public static void main(String[] args) { 
     try { 
      URL url = new URL("https://test.example.com/robots.txt"); 
      URLConnection connection = null; 
      try { 
       connection = url.openConnection(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      Map<String, List<String>> fields = connection.getHeaderFields(); 
      Iterator<Entry<String, List<String>>> headerIterator = fields.entrySet().iterator(); 
      System.out.println("HEADERS"); 
      System.out.println("-------------------------------"); 
      while (headerIterator.hasNext()){ 
       Entry<String, List<String>> header = headerIterator.next(); 
       System.out.println(header.getKey()+" :"); 
       Iterator<String> valueIterator = header.getValue().iterator(); 
       while (valueIterator.hasNext()){ 
        System.out.println("\t"+valueIterator.next()); 
       } 

      } 

      String inputLine; 
      DataInputStream input = new DataInputStream(connection.getInputStream()); 
      System.out.println("BODY CONTENT"); 
      System.out.println("-------------------------------"); 
      while ((inputLine = input.readLine()) != null) { 
       System.out.println(inputLine); 
      } 


     } catch (MalformedURLException e) { 
      System.err.println(e); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

संपादित मैं सिर्फ पुष्टि प्राप्त है कि इस जावा 1.5

+0

लेकिन क्या यह कोड वाइल्डकार्ड SSL प्रमाण पत्र के साथ काम करना चाहिए जो मूल प्रश्न था? जब मैं वाइल्डकार्ड प्रमाण पत्र के साथ किसी सर्वर पर इस कोड को आज़माता हूं तो मुझे एक SSLHandshakeException मिलता है क्योंकि सत्यापन पथ विफल रहता है। –

+1

@ पेट्री पेलेनिन यह मेरे लिए Verisign प्रमाणपत्र के साथ एक वैध डोमेन के लिए काम किया। आपके पास स्वयं हस्ताक्षरित प्रमाण पत्र के साथ कम भाग्य हो सकता है। जावा 6 के पुराने संस्करण का उपयोग करते समय आधुनिक प्रमाणपत्रों को इंटरमीडिएट सर्टिफिकेट की आवश्यकता होती है। (मेरे परीक्षणों के अनुसार) – Wes

+0

स्पष्टीकरण –

6

सूर्य के जेएसएसई में डिफ़ॉल्ट कार्यान्वयन वाइल्डकार्ड का समर्थन नहीं करता है। वाइल्डकार्ड को संभालने के लिए आपको अपना खुद का X509TrustManager लिखना होगा।

हालांकि, जावा जावा 5 के बाद SAN (विषय वैकल्पिक नाम) का समर्थन करता है। यदि आपके पास 20 से कम नाम हैं, तो आप उन सभी के लिए एक प्रमाणपत्र प्राप्त कर सकते हैं। यह वाइल्डकार्ड प्रमाण से सस्ता हो सकता है।

+0

मैं अपने जावा कोड को वाइल्डकार्ड सुरक्षित सबडोमेन से कनेक्ट करने के बजाए हमारे एपीआई से कनेक्ट होने वाली बाहरी पार्टियों के बारे में सोच रहा था। मैं यह सुनिश्चित करने के लिए प्रश्न में यह जोड़ने जा रहा हूं कि यह स्पष्ट है। – Wes

+0

ट्रस्ट मैनेजर में होस्ट नाम सत्यापन नहीं किया गया है। – Bruno

+0

जावा निश्चित रूप से 2017 में वाइल्डकार्ड केर्ट का समर्थन करता है और जावा 6 में भी अन्य जवाब देखता है। – Wes

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