前言
去年公司內一個應用加了支付寶支付功能,為了保證安全,支付請求鏈接寫成了https。
由於公司服務器使用的是的自簽名證書,而在Android系統中自己簽署的不能通過驗證的,所以會拋出錯誤。
於是我網上查找了很多資料,也嘗試過幾種方法,過程都很繁瑣,搞了一通宵都不行。
幸虧通過一個朋友找到了以下這個簡便的開源庫
https://github.com/lizhangqu/CoreUtil
然后用里面的 SSLUtil,10分鍾就解決了。
實現自簽名SSL證書
1.訪問以上開源庫網址下載SSLUtil

2.把服務器生成的自簽名證書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快速開發框架,里面自簽名已全部封裝好,只需替換下demo.cer文件即可。

Android快速開發框架-ZBLibrary 源碼下載地址如下:
https://github.com/TommyLemon/Android-ZBLibrary
