如果我們的ca證書是由第三方發(fā)布的不是自己生成的則不需要下面的配置 1.首先要將我們的ca證書放在工程的assert文件夾下在這里我們就不做說明了 2.下面是配置https的代碼
//設(shè)置Https 并設(shè)置超時(shí)時(shí)間 PRivate static OkHttpClient getSSLOkHttpClient(int timeOut) throws Exception { mOkHttpClient = new OkHttpClient();//讀取時(shí)長 AssetManager am = InnoFarmapplication.getAppContext().getAssets(); CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); InputStream caInput = am.open("ca.crt"); Certificate ca = certificateFactory.generateCertificate(caInput); String keyStoreType = KeyStore.getDefaultType(); KeyStore keyStore = KeyStore.getInstance(keyStoreType); keyStore.load(null, null); keyStore.setCertificateEntry("ca", ca); String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();//獲取默認(rèn)的TrustManagerFactory算法名稱。 TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm); tmf.init(keyStore); SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, tmf.getTrustManagers(), null); OkHttpClient.Builder builder = mOkHttpClient.newBuilder(); builder.sslSocketFactory(sslContext.getSocketFactory()) .hostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String hostname, SSLsession session) { if (hostname.equals(HttpHelper.HOST_NAME)) {// testacloudsys.innofarms.com return true; } return false; } }); builder.connectTimeout(timeOut, TimeUnit.SECONDS)//連接時(shí)長 .writeTimeout(timeOut, TimeUnit.SECONDS)//寫入時(shí)長 .readTimeout(timeOut, TimeUnit.SECONDS);//讀取時(shí)長 return builder.build(); }新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注