日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android https 简书,关于Android http改为https

發(fā)布時間:2025/3/21 Android 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android https 简书,关于Android http改为https 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

幸虧通過一個朋友找到了以下這個簡便的開源庫

然后用里面的SSLUtil,10分鐘就解決了。

實現(xiàn)自簽名SSL證書

1.訪問以上開源庫網(wǎng)址下載SSLUtil

2.把服務(wù)器生成的自簽名證書cer文件放到在assets目錄下,這里以demo.cer做示范

3.初始化SSLSocketFactory

在http請求類的constructor中添加以下代碼,這里以HttpRequest做示范

socketFactory = SSLUtil.getSSLSocketFactory(context.getAssets().open("demo.cer"));

4.添加信任https證書

在new OKHttpClient后添加以下代碼

if (url.startsWith("https://") && socketFactory != null) {

client.setSslSocketFactory(socketFactory);

}

以上這幾步就是全部步驟了,如果你還是覺得麻煩,推薦使用Android-ZBLibray這個Android快速開發(fā)框架,里面自簽名已全部封裝好,只需替換下demo.cer文件即可。

Android快速開發(fā)框架-ZBLibrary 源碼下載地址如下:

importjava.io.IOException;

importjava.io.InputStream;

importjava.security.KeyStore;

importjava.security.KeyStoreException;

importjava.security.NoSuchAlgorithmException;

importjava.security.SecureRandom;

importjava.security.UnrecoverableKeyException;

importjava.security.cert.CertificateException;

importjava.security.cert.CertificateFactory;

importjavax.net.ssl.KeyManager;

importjavax.net.ssl.KeyManagerFactory;

importjavax.net.ssl.SSLContext;

importjavax.net.ssl.SSLSocketFactory;

importjavax.net.ssl.TrustManagerFactory;

/**

* Https 證書工具類

* User:lizhangqu(513163535@qq.com)

* Date:2015-09-02

* Time: 12:52

*/

publicclassSSLUtil{

//使用命令keytool -printcert -rfc -file srca.cer 導(dǎo)出證書為字符串,然后將字符串轉(zhuǎn)換為輸入流,如果使用的是okhttp可以直接使用new Buffer().writeUtf8(s).inputStream()

/**

* 返回SSLSocketFactory

*

* @param certificates 證書的輸入流

* @return SSLSocketFactory

*/

publicstaticSSLSocketFactorygetSSLSocketFactory(InputStream...certificates) {

returngetSSLSocketFactory(null,certificates);

}

/**

* 雙向認證

* @param keyManagers KeyManager[]

* @param certificates 證書的輸入流

* @return SSLSocketFactory

*/

publicstaticSSLSocketFactorygetSSLSocketFactory(KeyManager[]keyManagers,InputStream...certificates) {

try{

CertificateFactorycertificateFactory=CertificateFactory.getInstance("X.509");

KeyStorekeyStore=KeyStore.getInstance(KeyStore.getDefaultType());

keyStore.load(null);

intindex=0;

for(InputStreamcertificate:certificates) {

StringcertificateAlias=Integer.toString(index++);

keyStore.setCertificateEntry(certificateAlias, certificateFactory.generateCertificate(certificate));

try{

if(certificate!=null)

certificate.close();

}catch(IOExceptione) {

}

}

SSLContextsslContext=SSLContext.getInstance("TLS");

TrustManagerFactorytrustManagerFactory=TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());

trustManagerFactory.init(keyStore);

sslContext.init(keyManagers, trustManagerFactory.getTrustManagers(),newSecureRandom());

SSLSocketFactorysocketFactory=sslContext.getSocketFactory();

returnsocketFactory;

}catch(Exceptione) {

e.printStackTrace();

}

returnnull;

}

/**

* 獲得雙向認證所需的參數(shù)

* @param bks bks證書的輸入流

* @param keystorePass 秘鑰

* @return KeyManager[]對象

*/

publicstaticKeyManager[]getKeyManagers(InputStreambks,StringkeystorePass) {

KeyStoreclientKeyStore=null;

try{

clientKeyStore=KeyStore.getInstance("BKS");

clientKeyStore.load(bks, keystorePass.toCharArray());

KeyManagerFactorykeyManagerFactory=KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());

keyManagerFactory.init(clientKeyStore, keystorePass.toCharArray());

KeyManager[] keyManagers=keyManagerFactory.getKeyManagers();

returnkeyManagers;

}catch(KeyStoreExceptione) {

e.printStackTrace();

}catch(UnrecoverableKeyExceptione) {

e.printStackTrace();

}catch(CertificateExceptione) {

e.printStackTrace();

}catch(NoSuchAlgorithmExceptione) {

e.printStackTrace();

}catch(IOExceptione) {

e.printStackTrace();

}

returnnull;

}

}

總結(jié)

以上是生活随笔為你收集整理的android https 简书,关于Android http改为https的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。