android對https的證書驗證(SSL證書)

2021-10-03 15:44:47 字數 2131 閱讀 8137

1. 背景與需求

近期在做ip切換的https訪問時,遇到了一些問題:客戶端如何進行https的證書驗證。

其實對於一般的專案基本都是做的單向驗證,即在客戶端證書或者host的驗證;對於金融、銀行相關的專案才會使用的雙向驗證,客戶端與服務端之間都要對彼此進行驗證,以防止中間人進行攻擊。

2.實現目標

3. 實現過程

public class sslsocketfactoryimp extends sslsocketfactory 

public x509trustmanager gettrustmanager()

public sslsocketfactoryimp(keystore keystore) throws nosuchalgorithmexception, keymanagementexception

@override

public void checkservertrusted(x509certificate x509certificates, string s) throws certificateexception

@override

public x509certificate getacceptedissuers()

};sslcontext.init(null, new trustmanager, null);

}@override

public string getdefaultciphersuites()

@override

public string getsupportedciphersuites()

@override

public socket createsocket() throws ioexception

@override

public socket createsocket(socket socket, string host, int post, boolean autoclose) throws ioexception

@override

public socket createsocket(string s, int i) throws ioexception, unknownhostexception

@override

public socket createsocket(string s, int i, inetaddress inetaddress, int i1) throws ioexception, unknownhostexception

@override

public socket createsocket(inetaddress inetaddress, int i) throws ioexception

@override

public socket createsocket(inetaddress inetaddress, int i, inetaddress inetaddress1, int i1) throws ioexception

}

keystore truststore;

truststore = keystore.getinstance(keystore.getdefaulttype());

truststore.load(null, null);

sslsocketfactoryimp ssl = new sslsocketfactoryimp(keystore.getinstance(keystore.getdefaulttype()));

hostnameverifier hostnameverifier = new hostnameverifier()

};builder.sslsocketfactory(ssl.getsslcontext().getsocketfactory(), ssl.gettrustmanager()).hostnameverifier

(hostnameverifier);

上面只是簡單的記錄驗證host的方式,下面的文章會讓你收穫更多。

1. 阿里移動安全:android安全開發之安全使用https

2. **https中間人攻擊與證書校驗

3. android官方培訓課程 : 使用https與ssl

從letsencrypt申請https證書踩坑記

今天成功用let s encrypt 上搞定了https證書,整個過程參考這篇文章 結合本人在製作ssl證書的過程中踩的一些坑說一些注意點 整個流程如下 1.在伺服器上執行乙個程式獲取let s encrypt頒發的證書 2.配置nginx伺服器使用生成的證書 正文1.在伺服器執行乙個程式獲取let...

apache配置https使用阿里CA證書

除了阿里官方的教程說明之外,還需要新增虛擬主機配置如下 弄了半天總是是解決了 documentrot 路徑 servername www.xx.com c phpstudy phptutorial www youli options followsymlinks execcgi allowoverr...

Android訪問https鏈結

引子 在android開發過程中我們常常需要訪問https鏈結,如果直接進行訪問有時候會丟擲異常,因為有些證書無法通過檢測,為了能夠訪問我們需要信任所有的證書,其實這是不安全的,但是一般我們都是訪問自己的 後台所以這麼做也可以。解決方法 為了信任證書我們需要實現兩個介面 1 hostnameveri...