大多數(如果不是全部)文章都指出證書固定對應用程式很重要。但是,如果您正在創建自己的 SDK 并將其出售給其他人使用,是否有必要實作它并沒有太多討論。
一些問題浮現在腦海
- 如果我將證書固定添加到我的 SDK,它會干擾客戶端的網路實作嗎?(例如,引入錯誤或崩潰)
- 如果不添加證書固定并且集成了我的 SDK 的客戶端添加了,這是否足以保證發送到我的 SDK 服務器的資料是“安全的”?(我猜不會,因為從 SDK 的角度來看,客戶不知道哪些來源是“安全的”)
我沒有做過太多的 SDK 開發,我真的很好奇。提前致謝!
我試過的
- 閱讀應用程式的證書固定
- 為小型應用程式實施證書固定
uj5u.com熱心網友回復:
首先要問您的 SDK 連接到什么遠程服務?
這里有幾個可能的選項:
- 您的 SDK 只是您提供的解決方案的移動部分,并且只有客戶端需要在其后端實作的后端集成。
在這種情況下,我建議將證書固定留給客戶,因為他應該負責應用程式是否正在聯系他受信任的后端。如果正確完成,整個應用程式將得到正確保護。
- 您的 SDK 正在聯系您的某個遠程服務器
在這種情況下,您基本上有兩種選擇:
- 將固定留給客戶端(例如什么都不做或在您的 SDK 檔案中提出一些建議),不推薦,因為您無法控制 SDK 的安全性
- 在 SDK 本身中實作自己的 pinning(推薦一個)
- 您的 SDK 正在聯系一些由其他供應商擁有的公共遠程服務(例如,一些 AWS 服務或 Google 服務/API)
在這種情況下,您有與第 2 點相同的選項,但將固定留給客戶端的危險較小,因為這些服務使用眾所周知的公開可信證書并具有其他反濫用措施(例如,您需要擁有正確的令牌才能與服務通信并在其基礎架構中創建一些帳戶等)。
- 還有一個選項(我認為這里不適用,但為了清楚起見我已經列舉了它)您的 SDK 完全離線并且沒有與任何遠程服務的通信。
當然,在這種情況下,本身就不需要證書固定。
更直接地回答你的問題:如果你說你有自己的 SDK 服務器,我會選擇在 SDK 端使用 pinning 來實作。
關于它是否會干擾客戶端證書固定,這取決于您如何實作證書固定本身,因為您可以通過多種方法來做到這一點。
- 網路安全配置
- OkHttp 和 CertificatePinner
- 信任管理器
上面的每個方法都有一篇簡短的文章https://www.netguru.com/blog/3-ways-how-to-implement-certificate-pinning-on-android
我從 Android 的角度描述了它,但上述假設對于兩個移動平臺都是正確的(iOS 端的實作可能與 Android 端不同)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/529525.html
標籤:安卓IOS安全sdk
上一篇:用gitlab打嗝
