/ / SSLPeerUnverifiedException (Unirest) - जावा, https, एसएसएल प्रमाणपत्र, unirest

SSLPeerUnverifiedException (Unirest)-जावा, https, एसएसएल-सर्टिफिकेट, Unirest

मैं एपीआई (आधिकारिक और अनौपचारिक दोनों) के साथ गड़बड़ करने के लिए नया हूं और मैं एक कॉलिंग का उपयोग कर रहा हूं JavaSnap। मैं उदाहरण कोड के एक बहुत ही बुनियादी कार्यान्वयन के साथ गड़बड़ कर रहा हूं, लेकिन त्रुटियों में चल रहा हूं। यहां बहुत बुनियादी कोड है:

Snapchat snapchat = Snapchat.login("xxxx", "xxxxx");

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

वैसे भी, अब सभी क्लास नॉटफाउंड अपवादों को मंजूरी दे दी है (मुझे उम्मीद है) मुझे निम्नलिखित अपवाद मिल रहा है:

com.mashape.unirest.http.exceptions.UnirestException: javax.net.ssl.SSLPeerUnverifiedException: Host name "feelinsonice-hrd.appspot.com" does not match the certificate subject provided by the peer (CN=*.appspot.com, O=Google Inc, L=Mountain View, ST=California, C=US)
at com.mashape.unirest.http.HttpClientHelper.request(HttpClientHelper.java:146)
at com.mashape.unirest.request.BaseRequest.asJson(BaseRequest.java:68)
at com.habosa.javasnap.Snapchat.requestJson(Snapchat.java:953)
at com.habosa.javasnap.Snapchat.login(Snapchat.java:160)
at Tester.go(Tester.java:21)

जैसा कि मैं इसे समझता हूं, ऐसा इसलिए है क्योंकि मुझे इसकी आवश्यकता हैसभी प्रमाणपत्रों पर भरोसा करने में सक्षम होना, हालांकि ऐसा करने के लिए मुझे विश्वास है कि मुझे SSLSameVerifiers का उपयोग SSLSocketFactorys के साथ करने की आवश्यकता है, लेकिन मैं वास्तव में इसके साथ गड़बड़ करना शुरू नहीं कर सकता क्योंकि मेरे पास केवल जावास्नाप एपीआई का स्रोत है, और त्रुटि का पता लगा रहा है मेरे लिए संपादित करने के लिए उपलब्ध सबसे हालिया विधि ढेर यह है:

private static HttpResponse<JsonNode> requestJson(String path, Map<String, Object> params, File file) throws UnirestException {
MultipartBody req = prepareRequest(path, params, file);

// Execute and return response as JSON
HttpResponse<JsonNode> resp = req.asJson();

// Record
lastRequestPath = path;
lastResponse = resp;
lastResponseBodyClass = JsonNode.class;

return resp;

मेरा सवाल है, क्या मैं वास्तव में अपनी सोच के साथ सही लाइनों पर हूं?
यदि मैं हूं तो मैं इस त्रुटि / भरोसेमंद प्रमाणपत्रों को समाप्त करने के अपने लक्ष्य को कैसे प्राप्त कर सकता हूं? अगर मैं नहीं हूं तो वास्तव में समस्या क्या है?

बहुत बहुत धन्यवाद

उत्तर:

उत्तर № 1 के लिए 1

मैं अपनी खोज याद रखने के लिए इस पुराने सवाल का जवाब देता हूं प्रमाण पत्र त्रुटि समाधान कुछ स्थानों से एक संयोजन है


import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;

import javax.net.ssl.SSLContext;
import javax.security.cert.CertificateException;
import javax.security.cert.X509Certificate;

import org.apache.http.client.HttpClient;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContextBuilder;

import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.JsonNode;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;

public class XXX {

private static HttpClient unsafeHttpClient;

static {
try {
SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustSelfSignedStrategy() {
public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
return true;
}
}).build();

unsafeHttpClient = HttpClients.custom().setSSLContext(sslContext)
.setSSLHostnameVerifier(new NoopHostnameVerifier()).build();

} catch (KeyManagementException | NoSuchAlgorithmException | KeyStoreException e) {
e.printStackTrace();
}
}

public static HttpClient getClient() {
return unsafeHttpClient;
}

public static void main(String[] args) {

try {
HttpClient creepyClient = RestUnirestClient.getClient();
Unirest.setHttpClient(creepyClient);

HttpResponse<JsonNode> response = Unirest.get("https://httpbin.org/get?show_env=1").asJson();
System.out.println(response.getBody().toString());

} catch (UnirestException e) {
e.printStackTrace();
}
}
}