2011-02-24 86 views
4

我希望能夠獲得ssl證書(如果可能,請鏈+),以便能夠顯示專有名稱並確定它是否爲EV證書。 (通過證書策略(wikipedia如何在iOS中檢索ssl服務器證書?

從我見過你只能得到帶有一些證書的詳細信息,如果該證書是自簽名的檢測

EV證書。有可能使用像CFNetwork的下層檢索證書(S)?

回答

9

通過macnetworkprog.lists.apple.com郵件列表 http://web.archiveorange.com/archive/v/x0fiWEI9emJFc36DY0UP,並提到在開發者論壇的幾個地方

那麼,默認TLS安全策略應該是足夠了,但如果 你想涉足這個過程中,你可以這樣做(在iPhone OS 3.0及更高版本,以及Mac OS X 10.6)通過實施 -connection:canAuthenticateAgainstProtectionSpace:-connection:didReceiveAuthenticationChallenge:代表回調, 尋找NSURLAuthenticationMethodServerTrust驗證 方法。

要做到這一點:

  1. 落實-connection:canAuthenticateAgainstProtectionSpace:委託回調。

  2. 在您的實現中,如果 保護空間的身份驗證方法是NSURLAuthenticationMethodServerTrust,你有 兩種選擇:

    2A。返回NO,並讓默認的TLS算法踢入。

    2b。返回YES,在這種情況下,您的-connection:didReceiveAuthenticationChallenge:委託回調將被調用。

如果你想看看證書,你作出這樣的 決定,可以在保護空間對象調用-serverTrust到 得到信任的對象,然後使用SecTrust API得到 前證書鏈。

  1. 如果採取路徑2b,則會調用您的-connection:didReceiveAuthenticationChallenge:委託回調。你有兩種選擇:

    3a。通過在挑戰的發件人上呼叫-cancelAuthenticationChallenge:來禁止連接。

    3b。通過在質詢發件人處致電-useCredential:forAuthenticationChallenge:來允許連接。要獲得證書,請致電-[NSURLCredential initWithTrust:]。實際上,你在這裏傳遞的信任對象並不重要;來自保護區的人會做。

您不必同步執行此操作。您可以鎖定 挑戰並從您的委託回調中返回,然後在未來某個時間解決 挑戰。