最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android APP之WebView校驗SSL證書的方法

 更新時間:2017年09月03日 13:17:25   投稿:mdxy-dxy  
這篇文章主要介紹了Android APP之WebView校驗SSL證書的方法,需要的朋友可以參考下

Android系統(tǒng)的碎片化很嚴(yán)重,并且手機(jī)日期不正確、手機(jī)根證書異常、com.google.android.webview BUG等各種原因,都會導(dǎo)致WebViewClient無法訪問HTTPS站點。SSL錯誤的處理方式十分關(guān)鍵,如果處理不當(dāng),可能導(dǎo)致中間人攻擊,黑客竊聽數(shù)據(jù),進(jìn)而引發(fā)安全事故。

  嚴(yán)謹(jǐn)?shù)靥幚韔nReceivedSslError尤為重要。請參考以下代碼,原理是:如果webview報告SSL錯誤,程序?qū)Ψ?wù)器證書進(jìn)行強校驗,如果服務(wù)器傳入證書的指紋(sha256)與記錄值一致,說明webview驗證過程存在缺陷(如:手機(jī)日期錯誤、根證書被刪除 等),忽略SSL錯誤;如果證書匹配失敗,表明數(shù)據(jù)通信有問題,保留阻斷。

  請先點擊 這里,獲取證書的指紋(sha256),然后調(diào)整代碼中的MySSLCNSHA256數(shù)組變量。如果APP需要訪問多張證書,請在代碼中加入多個證書指紋數(shù)值。在測試代碼時,請將手機(jī)日期設(shè)置在證書有效期之前,判斷WebView是否能正常訪問HTTPS站點。

webview.setWebViewClient(new WebViewClient() {
  @Override
  public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
	if (error.getPrimaryError() == SslError.SSL_DATE_INVALID // 日期不正確
  		|| error.getPrimaryError() == SslError.SSL_EXPIRED // 日期不正確
  		|| error.getPrimaryError() == SslError.SSL_INVALID // webview BUG
  		|| error.getPrimaryError() == SslError.SSL_UNTRUSTED) { // 根證書丟失
  		if (chkMySSLCNCert(error.getCertificate())) {
		    handler.proceed(); // 如果證書一致,忽略錯誤
  		}
	}
  }
  
  private boolean chkMySSLCNCert(SslCertificate cert) {
	byte[] MySSLCNSHA256 = { 35, 76, 110, -121, -68, -104, -12, 84, 39, 119, -55,
  		101, 95, -8, -90, 9, 36, -108, 5, -57, 76, -98, -19, -73, 91, -37, 18,
  		64, 32, -41, 0, 109 }; //證書指紋
  	Bundle bundle = SslCertificate.saveState(cert);
  	byte[] bytes = bundle.getByteArray("x509-certificate");
  	if (bytes != null) {
  		try {
	      CertificateFactory cf = CertificateFactory.getInstance("X.509"); 
	      Certificate ca = cf.generateCertificate(new ByteArrayInputSteam(bytes)); 
	      MessageDigest sha256 = MessageDigest.getInstance("SHA-256");
	      byte[] Key = sha256.digest(((X509Certificate) ca).getEncoded());
	      return Arrays.equals(key, MySSLCNSHA256);
  		} catch (Exception Ex) {}
  	}
  	return false;
  }
}

以上就是Android APP之WebView校驗SSL證書的方法,希望以后大家多多支持腳本之家,建議大家繼續(xù)瀏覽下一篇文章更精彩。

相關(guān)文章

  • Android 獲取正在運行的任務(wù)和服務(wù)的小例子

    Android 獲取正在運行的任務(wù)和服務(wù)的小例子

    Android 獲取正在運行的任務(wù)和服務(wù)的小例子,需要的朋友可以參考一下
    2013-05-05
  • Android開發(fā)技巧之Fragment的懶加載

    Android開發(fā)技巧之Fragment的懶加載

    我們都知道fragment放在viewPager里面,viewpager會幫我們預(yù)先加載一個,但是當(dāng)我們要看fragment里面的內(nèi)容時,我們也許只會去看第一個,不會去看第二個,如果這時候不去實現(xiàn)fragment的懶加載的話,就會多余的去加載一些數(shù)據(jù),造成用戶多消耗流量。下面來一起看看吧。
    2016-10-10
  • Android中ListView異步加載圖片錯位、重復(fù)、閃爍問題分析及解決方案

    Android中ListView異步加載圖片錯位、重復(fù)、閃爍問題分析及解決方案

    在Android所有系統(tǒng)自帶的控件當(dāng)中,ListView這個控件算是用法比較復(fù)雜的了,關(guān)鍵是用法復(fù)雜也就算了,它還經(jīng)常會出現(xiàn)一些稀奇古怪的問題,讓人非常頭疼,下面通過本篇文章給大家分享Android中ListView異步加載圖片錯位、重復(fù)、閃爍問題分析及解決方案,需要朋友可以參考
    2015-08-08
  • Android?NotificationListenerService?通知服務(wù)原理解析

    Android?NotificationListenerService?通知服務(wù)原理解析

    這篇文章主要為大家介紹了Android?NotificationListenerService?通知服務(wù)原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Android新特性ConstraintLayout完全解析

    Android新特性ConstraintLayout完全解析

    這篇文章主要為大家詳細(xì)介紹了Android新特性ConstraintLayout ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 詳解Android創(chuàng)建Handler的必備知識點

    詳解Android創(chuàng)建Handler的必備知識點

    本篇文章主要介紹Handler中需要了解的幾個必備知識點,比如Handler創(chuàng)建、異步Handler是個啥及如何創(chuàng)建,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下
    2022-10-10
  • Android游戲之?dāng)?shù)獨游戲開發(fā)

    Android游戲之?dāng)?shù)獨游戲開發(fā)

    這篇文章主要為大家詳細(xì)介紹了Android游戲之?dāng)?shù)獨游戲開發(fā)的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android Studio配置國內(nèi)鏡像源(利用hosts)

    Android Studio配置國內(nèi)鏡像源(利用hosts)

    這篇文章主要介紹了Android Studio配置國內(nèi)鏡像源(利用hosts),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Android FTP 多線程斷點續(xù)傳下載\上傳的實例

    Android FTP 多線程斷點續(xù)傳下載\上傳的實例

    本篇文章主要介紹了Android FTP 多線程斷點續(xù)傳下載\上傳的實例,具有一定的參考價值,有興趣的可以了解一下
    2017-08-08
  • Android中使用pull解析器操作xml文件的解決辦法

    Android中使用pull解析器操作xml文件的解決辦法

    本篇文章介紹了,在Android中使用pull解析器操作xml文件的解決辦法。需要的朋友參考下
    2013-04-04

最新評論

通江县| 通化市| 来安县| 辽阳县| 定结县| 乌拉特中旗| 泰州市| 高青县| 确山县| 通许县| 海安县| 普洱| 普陀区| 托克逊县| 策勒县| 册亨县| 万盛区| 邯郸市| 合山市| 枣强县| 双桥区| 盈江县| 平遥县| 阳城县| 房产| 全南县| 射洪县| 杭锦旗| 昭觉县| 布拖县| 武定县| 灌阳县| 曲靖市| 兰州市| 湘潭市| 新乡市| 竹山县| 闽清县| 北安市| 开阳县| 绥中县|