這是一個似乎遍佈各地的問題,但到目前爲止我還沒有找到明確的答案。是否可以在iPhone應用程序中加載帶有自簽名安全證書的SSL加密網站?
我負責爲我的公司編寫iPhone應用程序。我的公司有一個帶有自簽名證書的SSL-encrypted
網站。該網站使用頻率非常高,我的僱主希望通過iPhone輕鬆訪問該網站。我的應用程序的功能是提供一種存儲用於訪問網站的憑證的方法,當用戶打開應用程序時,它會自動將存儲的憑據發送到網站,並跳過登錄對話框直接進入網站。
我已經設置我的應用程序使用UIWebView
併爲該網站加載請求。我已經設置了常用的身份驗證方法,如:
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace {...}
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {...}
當我的應用程序達到了代碼,我告訴UIWebView
加載NSURLRequest
的一部分,它不會遇到我的任何身份驗證方法。它直接跳到didFailLoadWithError
,並且錯誤告訴我,我正在連接到可能只是冒充我的網站的網站,因爲它具有自簽名證書。
我該如何解決這個問題?我已經找到了一些涉及NSURLConnection
方法的答案,但是這些方法在我遇到錯誤之前似乎沒有被調用,並且被迫停止加載頁面。我也發現了一些涉及覆蓋「無證」方法的答案,但是當我嘗試實現該解決方案時,我的web視圖從未到達「didFailLoadWithError」或「didFinishLoad」,並且從不顯示任何內容。
我知道這不是回答你的問題,我討厭它,當人們提出這樣的建議,因爲可能有很好的理由,你不能這樣做......但是獲得非自簽名證書的努力和成本是否會降低?他們對像godaddy.com這樣的人很便宜,或者免費與http://www.startssl.com/ – Rory 2013-02-16 22:39:13
是的,另一種解決方案是獲得簽名證書。至於簡單地解決我們的具體問題,這可能會更容易。如果我花的時間比我多,我可能會回到我的老闆那裏並且確切地推薦它。但確保iOS可以處理未簽名的證書也很重要。如果不可能這樣做,這將成爲蘋果API的一個主要缺陷,樓上的某個人需要得到通知。謝謝你的提示,但我不知道有一個地方讓這些免費。 – Andrew 2013-02-18 19:14:55