package com.mm.android.deviceaddmodule.openapi; import java.security.SecureRandom; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; class SSLSocketClient { static SSLSocketFactory getSSLSocketFactory() { try { SSLContext sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, getTrustManager(), new SecureRandom()); return sslContext.getSocketFactory(); } catch (Exception e) { throw new RuntimeException(e); } } private static TrustManager[] getTrustManager() throws CertificateException { return new TrustManager[]{ new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] chain, String authType) { } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) { } @Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[]{}; } } }; } static HostnameVerifier getHostnameVerifier() { return new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession sslSession) { boolean flag = false; try { X509Certificate[] certs = (X509Certificate[]) sslSession.getPeerCertificates(); for (X509Certificate cert : certs) { String cname = cert.getSubjectDN().getName().split(",")[0]; if (hostname.endsWith(cname.substring(4))) { flag = true; break; } } } catch (Exception e) { e.printStackTrace(); } return flag; } }; } }