簡體   English   中英

如何在 Alamofire swift 5 中執行 SSL 公鑰固定

[英]how to do SSL public key pinning in Alamofire swift 5

我正在嘗試將 SSL 公鑰固定在 Alamofire swift 5 中集成。但我發現ServerTrustPolicyManager已被棄用。 請幫我整合。 謝謝。

要集成 SSL 公鑰固定,您首先必須通過拖放將 SSL 證書添加到項目的目標中。

要測試您的證書格式是否正確,您可以嘗試從主Bundle中的AlamofireExtensionpublicKeys參數獲取值,如下所示:

print("Bundle public keys: \(Bundle.main.af.publicKeys)")

如果該數組至少有一個元素,那么您就准備好了。 如果沒有,請嘗試將 SSL 證書導入 Mac 的鑰匙串,然后將其導出為.cer ,然后將其添加到項目的目標中。 (這應該工作)

要檢查 SSL 證書的公鑰是否是您在項目中導入的公鑰,您可以在創建Session時將 Alamofire 的ServerTrustManagerPublicKeysTrustEvaluator實例一起使用:

let evaluators: [String: ServerTrustEvaluating] = [
    "your.domain.com": PublicKeysTrustEvaluator()
]
let serverTrustManager = ServerTrustManager(evaluators: evaluators)
let session = Session(serverTrustManager: serverTrustManager)

確保在evaluators字典中,鍵(上面代碼中的"your.domain.com" )是您的服務器域,如果您不希望 Alamofire 執行默認驗證和/或驗證您可以通過的主機對PublicKeysTrustEvaluator的初始化程序中的那些參數為false

let evaluators: [String: ServerTrustEvaluating] = [
    "your.domain.com": PublicKeysTrustEvaluator(
        performDefaultValidation: false,
        validateHost: false
    )
]
let serverTrustManager = ServerTrustManager(evaluators: evaluators)
let session = Session(serverTrustManager: serverTrustManager)

然后您必須使用此Session實例在您的域中發出任何請求,如下所示:

let url = "https://your.domain.com/path/to/api"
session.request(url, method: .post, parameters: parameters).responseDecodable { response in
    
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM