मुझे एक वेबसाइट मिली है कि मैं एक विश्वसनीय सेवा के लिए एसएसएल सक्षम कर रहा हूं। हमने रैपिडएसएसएल के साथ पंजीकृत किया है, कर्ट स्थापित किया है, और यह RapidSSL checker पास करता है। मैं बिना किसी समस्या के, एंड्रॉइड ब्राउज़र (फ़ायरफ़ॉक्स और ओपेरा में निर्मित) सहित विभिन्न ब्राउज़रों के साथ साइट तक पहुंचने में सक्षम हूं, कोई चेतावनी नहीं।एंड्रॉइड एसएसएल: javax.net.ssl.SSLPeerUnverifiedException: कोई सहकर्मी प्रमाणपत्र (अभी तक फिर से)
हालांकि, जब मैं अपने Android एप्लिकेशन के साथ यह तक पहुँचने का प्रयास, मैं निम्न अपवाद प्राप्त करें:
08-11 20:04:05.586 363 381 E HttpProvider: Error executing request: No peer certificate
08-11 20:04:05.586 363 381 E HttpProvider: javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
08-11 20:04:05.586 363 381 E HttpProvider: at org.apache.harmony.xnet.provider.jsse.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:259)
08-11 20:04:05.586 363 381 E HttpProvider: at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:93)
08-11 20:04:05.586 363 381 E HttpProvider: at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:381)
08-11 20:04:05.586 363 381 E HttpProvider: at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:164)
08-11 20:04:05.586 363 381 E HttpProvider: at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
08-11 20:04:05.586 363 381 E HttpProvider: at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
08-11 20:04:05.586 363 381 E HttpProvider: at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:359)
08-11 20:04:05.586 363 381 E HttpProvider: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
08-11 20:04:05.586 363 381 E HttpProvider: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
08-11 20:04:05.586 363 381 E HttpProvider: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
08-11 20:04:05.586 363 381 E HttpProvider: at com.xxxxx.netlib.http.HttpProvider.executeRequest(HttpProvider.java:75)
यह एमुलेटर पर एंड्रॉयड 2.3.3 पर और एक 3.2 टैबलेट पर होता है। मैंने इस पर बहुत सारी हिट देखी हैं, लेकिन मुझे जो कुछ भी मिला है, वह मुझे इस मुद्दे को ठीक करने में मदद नहीं करता है।
अधिक डेटा:
$ openssl s_client -CAfile www.xxxxx.com.pem -connect www.xxxxx.com:443
CONNECTED(00000003)
depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority
verify return:1
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = "GeoTrust, Inc.", CN = RapidSSL CA
verify return:1
depth=0 serialNumber = 1-7wArtEjdTwJ94d5iVDooDmmC4mXyVj, OU = GT82425783, OU = See www.rapidssl.com/resources/cps (c)12, OU = Domain Control Validated - RapidSSL(R), CN = www.xxxxx.com
verify return:1
---
Certificate chain
0 s:/serialNumber=1-7wArtEjdTwJ94d5iVDooDmmC4mXyVj/OU=GT82425783/OU=See www.rapidssl.com/resources/cps (c)12/OU=Domain Control Validated - RapidSSL(R)/CN=www.xxxxx.com
i:/C=US/O=GeoTrust, Inc./CN=RapidSSL CA
1 s:/C=US/O=GeoTrust, Inc./CN=RapidSSL CA
i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
---
[snip]
कोड मैं ग्राहक स्थापित करने के लिए चल रहा हूँ:
public class HttpProvider implements INetworkProvider {
private static final String LOG = "HttpProvider";
protected DefaultHttpClient client;
public HttpProvider() {
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
final SSLSocketFactory sslSocketFactory = SSLSocketFactory.getSocketFactory();
sslSocketFactory.setHostnameVerifier(SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
registry.register(new Scheme("https", sslSocketFactory, 443));
client = new DefaultHttpClient(
new ThreadSafeClientConnManager((new BasicHttpParams()), registry), new BasicHttpParams()
);
}
[snip]
मैं भी STRICT_HOSTNAME_VERIFIER साथ की कोशिश की है और अभी भी कोई खुशी।
जो मैं समझता हूं उससे मुझे किसी भी कस्टम ट्रस्टस्टोर या कीस्टोर सेट अप करने की आवश्यकता नहीं है क्योंकि मैं एक मान्यता प्राप्त प्रमाण प्रदाता के साथ पंजीकृत हूं।
मैं एसएसएल के साथ बहुत नया हूं और मुझे लगता है कि मैं तीन पत्र शब्दकोष के समुद्र में तैर रहा हूं, और मुझे उम्मीद है कि यहां कोई व्यक्ति मुझे सही दिशा में एक झुकाव दे सकता है।
मुझे पता चला है कि सिस्टम ट्रस्ट स्टोर को कैसे डंप करना है, और मुझे वहां रैपिडएसएसएल दिखाई नहीं दे रहा है, यह कहने के बावजूद कि यह शहद में था। मैं अपना खुद का ट्रस्टस्टोर बनाने की कोशिश करूंगा और देखें कि क्या होता है। – mvsjes2
इसे आज़माएं: https://stackoverflow.com/a/38598593/2301721 (HttpsURLConnection का उपयोग करके) – ashishdhiman2007