我想檢查天氣SSL URL是否存在於URL中,也想檢查它的版本和驗證類型。如何檢查iOS中SSL證書的安全性?
我創建了一個應用程序,我在調用NSURLConnection委託方法通過服務器發送請求。
也使用「canAuthenticateAgainstProtectionSpace」方法,但是一旦連接建立,該方法就不會被調用。
誰能告訴我如何做到這一點。
我想檢查天氣SSL URL是否存在於URL中,也想檢查它的版本和驗證類型。如何檢查iOS中SSL證書的安全性?
我創建了一個應用程序,我在調用NSURLConnection委託方法通過服務器發送請求。
也使用「canAuthenticateAgainstProtectionSpace」方法,但是一旦連接建立,該方法就不會被調用。
誰能告訴我如何做到這一點。
iOS不會提供非常詳細的證書信息訪問權限。您有兩種選擇:私有API或使用OpenSSL構建自己的評估程序。
您可以在opensource code中看到專用證書功能。該版本可從SecCertificateVersion()
獲得。我不確定你在這裏的「驗證類型」是什麼意思。
要使用OpenSSL完成此操作,您可以使用SecCertificateCopyData()
獲取DER數據,然後自行解析所有內容。
我建議在這個問題上開一個雷達(bugreporter.apple.com)。缺乏對證書基本信息的訪問是一個嚴重的問題。
如果你正在尋找從NSURLConnection
提取證書的示例代碼,請從Chapter 11 sample codeiOS:PTL:
- (void)connection:(NSURLConnection *)connection
willSendRequestForAuthenticationChallenge:
(NSURLAuthenticationChallenge *)challenge
{
NSURLProtectionSpace *protSpace = challenge.protectionSpace;
SecTrustRef trust = protSpace.serverTrust;
...
SecCertificateRef cert = SecTrustGetCertificateAtIndex(trust, 0);
...
在這一點上,cert
握着你的葉證書。
感謝您的建議。「驗證類型」表示在URL上實現了SSL的驗證類型,包括標準驗證或擴展驗證。在這裏,我使用了「第11章示例代碼」中給出的代碼,但是當我嘗試構建應用程序時,出現編譯時錯誤a - >架構i386的未定義符號: 「_SecPolicyCreateBasicX509」,引用來自: _RNSecTrustEvaluateAsX509 ConnectionViewController.o,「_SecCertificateNotValidAfter」,引用來自: - ConnectionViewController.o中的[ConnectionViewController connection:willSendRequestForAuthenticationChallenge:] – iLearner 2012-02-24 11:40:51
您需要鏈接Security.framework。 – 2012-02-24 14:57:51