1、前言:
1.1、SSL劫持攻擊:
目前雖然很多Android APP使用了https通信方式,但是只是簡單的調用而已,並未對SSL證書有效性做驗證。在攻擊者看來,這種漏洞讓https形同虛設,可以輕易獲取手機用戶的明文通信信息,攻擊示意圖如下:
2、解決方案:
2.1、服務器證書鎖定:
2.1.1、簡介:
服務器證書鎖定的原理是在代碼中精確的驗證當前服務器是否持有某張指定的證書。X509TrustManager接口是實現證書鎖定一種方法,它通過在SSL回調函數中讀取服務器證書密鑰並和程序預埋的證書密鑰進行對比,如果兩者不一致則強行斷開鏈接。
2.1.2 、流程圖:2.2、根證書鎖定+域名驗證:
2.2.1、簡介:
和服務器證書鎖定類似,區別在於該方案檢查服務器證書是否由指定的CA證書簽名,即檢查簽名服務器證書的CA證書的公鑰和本地預置的CA證書公鑰是否一致,同時,還會進一步校驗服務器證書的域名是否有效。
2.2.2、流程圖:

2.3、方案對比:
方案 |
優點 |
缺點 |
服務器證書鎖定 |
安全性最高,實施攻擊必須拿到對應服務器私鑰證書。 |
更換證書時APP影響大 |
根證書鎖定+域名驗證 |
更換服務器證書不受影響 |
安全性和CA機構以及域名驗證機制有關。 |