OKhttp實現(xiàn)自簽名https請求

項目需求改變顽馋,需要更加安全的網(wǎng)絡(luò)請求疑苔,然后就需要我們在android客戶端實現(xiàn)單向認(rèn)證請求均蜜。

直接上代碼



public class OkHttpsManager {

// public static int REQ_TYPE = 3; // 1:http 2:https 3:https clientCA

private static String clientP12 = "www/client.p12";

// private static String p12Pwd="citicbank"; //測試密碼 citicbank

//你的密碼

private static String p12Pwd = "citicbank@"; // citicbank@ 正式密碼

private static OkHttpsManager manager;

private OkHttpsManager(){}

public static OkHttpsManager getInstance(){

if(manager==null){

synchronized (OkHttpsManager.class) {

if(manager==null){

manager=new OkHttpsManager();

}

}

}

return manager;

}

/**

* 客戶單證書 被 Okhttp 使用

*

* @return

* @throws Exception

*/

public? OkHttpClient mytrust()throws Exception{

? javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];

? Log.e("sslt",trustAllCerts.length+"");

? ? ? ? javax.net.ssl.TrustManager tm = new miTM();

? ? ? ? trustAllCerts[0] = tm;

? ? ? ? javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL");


? ? ? ? //客戶端證書

? ? ? ? KeyManager[] clientkeyManagers =getClientKeyManager();

? ? ? ? sc.init(clientkeyManagers, trustAllCerts, null);

? ? ? ? OkHttpClient client = new OkHttpClient.Builder()

.connectTimeout(10, TimeUnit.SECONDS)

.sslSocketFactory(sc.getSocketFactory())

.readTimeout(5, TimeUnit.SECONDS).build();

? ? ? ? return client;

? }

public KeyManager[] getClientKeyManager() throws Exception {

// -----------客觀端證書-----------------

KeyManager[] clientkeyManagers = null;

if (SwpConfig.REQ_TYPE == 3) {

try {

char[] pwd = p12Pwd.toCharArray();

KeyStore keyStore = KeyStore.getInstance("PKCS12");

InputStream astream = SwpConfig.getAppContext().getAssets()

.open(clientP12);

keyStore.load(astream, pwd);

KeyManagerFactory kmf = KeyManagerFactory.getInstance("X509");

kmf.init(keyStore, pwd);

clientkeyManagers = kmf.getKeyManagers();

Log.e("ssl",clientkeyManagers.length+"");

} catch (Exception e) {

}

}

if(clientkeyManagers==null){

throw new IllegalAccessError("clientkeymanagers do not null");

}

return clientkeyManagers;

}


? static class miTM implements javax.net.ssl.TrustManager, javax.net.ssl.X509TrustManager {

? ? ? public java.security.cert.X509Certificate[] getAcceptedIssuers() {

? ? ? ? ? return new X509Certificate[0];

? ? ? }

? ? ? public boolean isServerTrusted(java.security.cert.X509Certificate[] certs) {

? ? ? ? ? return true;

? ? ? }

? ? ? public boolean isClientTrusted(java.security.cert.X509Certificate[] certs) {

? ? ? ? ? return true;

? ? ? }

? ? ? public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType)

? ? ? ? ? ? ? throws java.security.cert.CertificateException {

? ? ? ? ? return;

? ? ? }

? ? ? public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType)

? ? ? ? ? ? ? throws java.security.cert.CertificateException {

? ? ? ? ? return;

? ? ? }

}

}



你可以直接把以上的代碼復(fù)制到你的應(yīng)用中,但是有些地方需要你注意一下



你要改的就是這兩個代碼,第一個參數(shù)是你你們公司自簽名的文件在你項目的哪個位置

第二個參數(shù)是 你們公司簽名的密碼

注意:我的簽名文件是.p12系谐,如果你的不是,那可以參考一下其它人的代碼。我對這個原理也不是很懂宪潮。只是實現(xiàn)了公司的需求。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末趣苏,一起剝皮案震驚了整個濱河市狡相,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌食磕,老刑警劉巖尽棕,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異彬伦,居然都是意外死亡滔悉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門单绑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來回官,“玉大人,你說我怎么就攤上這事搂橙∏柑幔” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵区转,是天一觀的道長苔巨。 經(jīng)常有香客問我,道長废离,這世上最難降的妖魔是什么侄泽? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮厅缺,結(jié)果婚禮上蔬顾,老公的妹妹穿的比我還像新娘宴偿。我一直安慰自己,他們只是感情好诀豁,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布窄刘。 她就那樣靜靜地躺著,像睡著了一般舷胜。 火紅的嫁衣襯著肌膚如雪娩践。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天烹骨,我揣著相機(jī)與錄音翻伺,去河邊找鬼。 笑死沮焕,一個胖子當(dāng)著我的面吹牛吨岭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播峦树,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辣辫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了魁巩?” 一聲冷哼從身側(cè)響起急灭,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谷遂,沒想到半個月后葬馋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肾扰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年畴嘶,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片白对。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡掠廓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出甩恼,到底是詐尸還是另有隱情蟀瞧,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布条摸,位于F島的核電站悦污,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏钉蒲。R本人自食惡果不足惜切端,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望顷啼。 院中可真熱鬧踏枣,春花似錦昌屉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至马昨,卻和暖如春竞帽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸿捧。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工屹篓, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人匙奴。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓堆巧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親泼菌。 傳聞我的和親對象是個殘疾皇子恳邀,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home...
    光劍書架上的書閱讀 3,884評論 2 8
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)灶轰,斷路器,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • Https請求 一刷钢、訪問HTTPS站點 兩種方法來模擬發(fā)送HTTP請求笋颤,訪問HTTP站點。一種方式是通過java....
    Gothrow閱讀 2,263評論 0 2
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法内地,類相關(guān)的語法伴澄,內(nèi)部類的語法,繼承相關(guān)的語法阱缓,異常的語法非凌,線程的語...
    子非魚_t_閱讀 31,639評論 18 399
  • 之一 月亮灣里繡月亮,斜陽島上畫斜陽荆针; 滴水丹屏五彩池敞嗡,芭蕉葉下影成雙。 之二 相思湖畔柳絲漾航背,三婆廟里祈安香喉悴; ...
    劉海峰閱讀 460評論 0 0