如何在 iOS 應用程序中執行 SSL 固定
已發表: 2020-02-24人們一走出家門,就開始尋求開放的Wi-Fi網絡。 無論他們是在機場等候還是坐在咖啡館裡,首要任務是找到一個開放的Wi-Fi連接。
可怕的是,黑客們也在追求同樣的目標。 他們也等待用戶在開放網絡上發起連接請求,然後才將他們的網絡釣魚大腦投入工作並剝奪他們的敏感數據或更糟糕的是,他們的銀行賬戶中的錢。
雖然 HTTPS 在某種程度上是有效的,但它是一種 SSL 協議,眾所周知,它通過牢不可破和高度安全而使用戶安全。 但是中間人 (MITM) 攻擊也找到了突破這一點的方法。
這就是 SSL Pinning技術作為移動應用安全最佳實踐之一出現的地方。 專門談論平台,它是理想的 iphone 應用程序安全解決方案,可以出色地解決問題。
在本文中,我們將研究在 iOS 應用程序中加入 SSL Pinning 以防止這些中間人攻擊的類型和過程。 是OWASP 移動安全測試實踐的一個活躍部分的過程。
SSL 證書固定方法的類型
SSL Pinning 測試主要有兩種方法,如下所述:


- 固定證書 – 您可以下載服務器的證書並將它們捆綁在應用程序中。 在運行時,應用程序會將服務器證書與您嵌入的證書進行比較。
- 固定公鑰 - 您可以在代碼中檢索證書的公鑰作為字符串。 在運行時,應用程序將證書的公鑰與代碼中硬編碼的公鑰進行比較。
在兩種 SSL 固定iOS方法之間進行選擇取決於您的服務器配置和個人需求。 當您選擇第一個選項時,您必須在服務器更改其證書時上傳應用程序,否則它將停止工作。 選擇第二個選項時,您可能會違反密鑰輪換策略,因為公鑰不會更改。
現在讓我們看一下在您的 iOS 應用程序中實施 SSL Pinning 的步驟。
*注意:下面提到的步驟遵循使用 Swift 固定 iOS 證書的過程。
如何在你的 iOS 應用中實現 SSL Pinning
1. NSURLSession
對於 NSURLSession,處理 SSL pinning 的主要方法是 URLSession:didReceiveChallenge:completionHandler:delegate。 開發人員必須設置類以符合 URLSessionDelegate 並將此函數粘貼到類中:
該函數將“向委託人請求憑據,以響應來自遠程服務器的身份驗證請求”。 然後, iPhone 應用程序開發人員會將來自服務器的證書與保存在應用程序包中的證書進行比較。 如果發現兩個證書相同,則身份驗證將使其通過,客戶端將能夠連接到服務器。
2. Alamofire 證書固定
Alamofire是 Swift 語言中最著名的 HTTP 網絡庫之一。 它帶有 iOS Swift 中用於 SSL pinning 的內置功能,並且非常易於使用。 這是使用 Alamofire 證書固定製作安全 iOS 應用程序的方法。

與 SSL Pinning 實施相關的常見問題以及如何解決這些問題
知名應用程序開發機構的質量保證專家會定期測試移動應用程序的安全漏洞,包括完整的網絡滲透。 但是有很多應用測試機構並沒有以同樣的熱情專注於這些領域。 在他們的應用程序中實施這種特定的iPhone 安全解決方案時,他們似乎不太情願。
以下是這背後的一些普遍原因——
- iOS應用程序中 SSL 固定的最大缺點之一是它的實現。 這個過程很複雜,它會迫使開發人員一次又一次地編寫代碼,並使應用程序的構建過程複雜化。
- 固定會定期更改的 iOS SSL 證書可能會迫使開發人員在每次證書更改時更新應用程序二進製文件。
- 必須採取多種措施來保護繞過 iOS SSL 驗證的方法。
注意到舞台缺席可能帶來的影響,以下是可靠的 iPhone 應用程序開發公司如何避免一些常見的陷阱。
測試引腳
與測試是否一切正常的常規應用程序測試不同,SSL pinning 測試的方法是您必須檢查是否有故障。 您將不得不專注於測試應用程序是否取消了可能受損的連接。 如果應用程序啟用與單個端點的通信,則測試將像將 GET 請求設置為任意狀態一樣簡單。 理想情況下,在這種情況下,應用程序必須取消連接並且請求應該失敗。
辦理證件變更
更新域證書會保留公鑰/私鑰對,但情況並非總是如此。 但是,如果您正確規劃更新周期,您將能夠避免最終用戶的停機時間。
在iOS SSL 證書在網站上激活之前,除了當前激活的證書之外,您必須將其固定在應用程序中,然後發布更新。 當我們在 Appinventiv 上按照此步驟製作安全的iOS 應用程序時,我們會臨時使用新證書執行快速測試,並在兩個證書都固定的情況下測試應用程序。
關於 iOS 應用程序中 SSL 固定的常見問題解答
1. iOS 應用中的敏感數據存儲在哪裡?
應用程序的敏感數據應始終存儲在 iCloud 或 iOS 中的 Keychain 中,甚至在適當加密後存儲在數據庫中。
2. SSL 是如何工作的?
SSL Pinning 是最常見的iOS 應用安全提示之一。 但是為了理解它的含義,您首先必須知道 SSL 是如何工作的。
- 瀏覽器嘗試連接受 SSL 保護的網站。 瀏覽器然後請求網絡服務器識別自己。
- 然後,Web 服務器向瀏覽器發送其 SSL 證書副本。
- 瀏覽器檢查是否必須信任 SSL 證書。 如果可以,則向 Web 服務器發送一條消息。
- 然後,Web 服務器發回確認以開始 SSL 加密會話。
- 然後最終在瀏覽器和 Web 服務器之間共享加密數據。
結束的想法
儘管 SSL pinning 被認為是安全的,並且在需要加密時被廣泛使用,但在構建高風險應用程序時總是歡迎使用另一層保護。 SSL pinning 允許您在 SSL 信任驗證鏈之上驗證服務器的身份。
使用 SSL 固定,您可以拒絕所有連接,除了與我們已將其 SSL 證書保存到本地捆綁包中的指定服務器的連接。 這樣做的一個潛在缺點是,無論何時更改服務器的 SSL 密鑰,您都需要更新應用程序。
如果您還計劃使用 SSL pinning 啟動 iOS 應用程序,最好諮詢最好的 iOS 應用程序開發公司。
