2012-10-18 13 views
10

प्रमाणीकृत सहकर्मी नहीं, SSLPeerUnverified की सुनसान समस्या है, लेकिन मैं स्वयं हस्ताक्षरित प्रमाणपत्र का उपयोग नहीं कर रहा हूँ। मैं https का उपयोग कर होस्ट से कनेक्ट करने का प्रयास करता हूं। इस होस्ट के पास एक सही प्रमाणपत्र है, न तो फ़ायरफ़ॉक्स और न ही HttpsUrlConnection में इसके साथ कोई समस्या है। हालांकि HttpClient का उपयोग कर कनेक्ट करने का प्रयास, मैं खतरनाक अपवाद मिलता है।SSLPeerUnverifiedException: एक बार फिर

कोई सुराग? या टिप कहां देखना है?

धन्यवाद!

संपादित करें: डिबग आउटपुट

मुख्य, हैंडलिंग अपवाद:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: 
sun.security.provider.certpath.SunCertPathBuilderException: 
unable to find valid certification path to requested target 

मुख्य, getSession() में IOException:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: 
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: 
unable to find valid certification path to requested target 

उत्तर

24

ऐसा लगता है कि आप में प्रमाणपत्र आयात करने की जरूरत है भरोसेमंद कीस्टोर आपका जेवीएम उपयोग कर रहा है। यदि आप अपने आवेदन में एक अलग विश्वसनीय कुंजीस्टोर का उपयोग नहीं कर रहे हैं तो यह "cacerts" होगा।

आप "How to Fix 'SSLPeerUnverifiedException: peer not authenticated' Exception in Groovy/Java" पर कदम गाइड द्वारा एक कदम का पालन कर सकते हैं।

लघु संस्करण:

  1. भागो निम्न आदेश, की जगह यूआरएल के साथ $ADDRESS, शून्य से "https: //":

    echo -n | openssl s_client -connect $ADDRESS:443 | \ 
        sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/$ADDRESS.cert 
    
  2. भागो निम्न आदेश, $ALIAS एक की जगह कुंजी, $ADDRESS प्रमाणपत्र नाम के साथ ऊपर से, $PATH अपने JRE में cacerts के लिए पथ के साथ के लिए लघु नाम।

    sudo keytool -importcert -alias "$ALIAS" -file /tmp/$ADDRESS.cert \ 
        -keystore $PATH/cacerts -storepass changeit 
    
+0

2 दिनों। अपना वोट अच्छा आदमी ले लो। –

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