簡體   English   中英

將NSURLCredential forTrust永久保存在鑰匙串中

[英]Make NSURLCredential forTrust permanent in the keychain

我正在應對一個挑戰,其中protectionSpace.authenticationMethod ==“ NSURLAuthenticationMethodServerTrust”。

我正在創建憑證forTrust並將其添加到NSURLCredentialStorage中。

但是每次我重新啟動應用程序(在模擬器中運行)時,我都會再次面臨挑戰。 在任何一次會話中,它只詢問一次,因為我將forTrust憑據添加到了存儲中。 另外,我可以看到NSURLCredential存儲中的那個protectionSpace。 但是,當我重新啟動應用程序后,它就消失了,我必須再次重新信任服務器。

服務器正在使用自簽名證書,我可以通過HTTPS訪問

請幫忙!

提前致謝。

技術說明TN2232:HTTPS服務器信任評估列出了在iOS應用程序中使用自簽名證書的建議最佳實踐。 推薦的方法是實現TLS信任評估,例如SSL固定:信任特定的證書或公鑰。 在WWDC 2014的“ 構建企業和教育應用程序”中演示了如何實現這一點。 不幸的是,用於SSL固定的代碼尚未作為示例代碼發布,也沒有在幻燈片中可用-僅用於視頻。 會話中很好地解釋了評估服務器信任度的過程。

這不能解決您保持評估的服務器信任的問題。 身份驗證質詢提供的服務器信任表示SSL事務的狀態,因此不能真正以有意義的方式持久化。 這就是為什么使用NSURLCredential的構造函數沒有NSURLCredentialPersistence的參數的NSURLCredentialPersistence :服務器信任必須針對每個會話或事務。

也就是說,URL加載系統確實允許對SSL / TLS服務器信任評估進行默認處理。 通常,對於HTTPS連接,您不需要為NSURLAuthenticationMethodServerTrust實現身份驗證質詢處理程序。 如果默認信任評估失敗,則連接將失敗,並出現一些常見錯誤-這是使用自簽名證書時發生的情況,因為該證書不受信任。 可以將您信任的,自簽名證書添加到應用程序的信任錨中(就像您在SSL固定的信任評估中所做的那樣),從那時起,默認處理將“起作用”。 不幸的是,我目前沒有可以在其中進行測試的測試環境。

暫無
暫無

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

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