यहाँ में सुरक्षित बाकी सेवा को कॉल करने नमूना कोड है कि आप की अनदेखी करने के एसएसएल प्रमाणपत्र में त्रुटियाँ SimpleSSLSocketFactory
public class SimpleSSLSocketFactory extends org.apache.http.conn.ssl.SSLSocketFactory {
private SSLSocketFactory sslFactory = HttpsURLConnection.getDefaultSSLSocketFactory();
public SimpleSSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException,
UnrecoverableKeyException {
super(null);
try {
SSLContext context = SSLContext.getInstance("TLS");
// Create a trust manager that does not validate certificate chains and simply
// accept all type of certificates
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[] {};
}
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
} };
// Initialize the socket factory
context.init(null, trustAllCerts, new SecureRandom());
sslFactory = context.getSocketFactory();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException {
return sslFactory.createSocket(socket, host, port, autoClose);
}
@Override
public Socket createSocket() throws IOException {
return sslFactory.createSocket();
}
}
और उपयोग नामक एक नया जावा वर्ग बनाने का उपयोग कर सकते है डिफ़ॉल्ट क्लाइंट के बजाय httpclient का पालन
// Setup a custom SSL Factory object which simply ignore the certificates
// validation and accept all type of self signed certificates
SSLSocketFactory sslFactory = new SimpleSSLSocketFactory(null);
sslFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
// Enable HTTP parameters
HttpParams paramsSecure = new BasicHttpParams();
HttpProtocolParams.setVersion(paramsSecure, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(paramsSecure, HTTP.UTF_8);
// Register the HTTP and HTTPS Protocols. For HTTPS, register our custom SSL Factory object.
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme("https", sslFactory, 443));
// Create a new connection manager using the newly created registry and then create a new HTTP client
// using this connection manager
ClientConnectionManager ccm = new ThreadSafeClientConnManager(paramsSecure, registry);
HttpClient httpclient = new DefaultHttpClient(ccm, paramsSecure);
चीयर्स !!
स्रोत
2013-04-04 07:48:47
क्या आपको कोई समस्या है जो मुझे लगता है कि आपको नहीं करना चाहिए, अगर हां तो क्या? – Prateek
आपने क्या प्रयास किया है? –
मैं इस लिंक http://stackoverflow.com/questions/2864016/httpclient-ssl-certificate-on-android की कोशिश की है लेकिन मैं नहीं समझ सकता कैसे HttpClient के साथ इस SSL का उपयोग करने के लिए अपने सेवा –