2010-04-20 46 views
1

我需要使用專用HTTPS API,並且客戶端在主機上有不正確的證書。 證書適用於www.clienthost.com,我正在使用api.clienthost.com。 所以我需要通過HTTPS連接到api.clienthost.com忽略不正確的證書,但仍然確保它是www.clienthost.com的而不是別的。 我發現這個答案:How to use NSURLConnection to connect with SSL for an untrusted cert?它似乎解決了我的問題的一半,但我想弄清楚如何仍然檢查主機證書是我期望看到,並沒有不同。如何讓iPhone應用程序接受不正確的服務器證書,但只有特定的一個?

回答

2

嘗試實施了NSURLConnection的

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge 

委託方法那麼下面將包含主機

[[challenge protectionSpace] host] 

然後可以繼續通過調用以下

continueWithoutCredentialForAuthenticationChallenge: 

cancelAuthenticationChallenge: 

useCredential:forAuthenticationChallenge: 
+0

我想一個它不會讓我無法接受一些自己擁有的合適主機的證書嗎? – 2010-04-20 14:54:12

+0

它應該是證書來源的主機。如果你擔心僞造的可能性,你應該做一些測試來確定這一點。 此外,NSURLAuthenticationChallenge中的NSURLCredential和NSURLProtectionSpace對象可以訪問其他可以進行安全檢查的字段。 – adam 2010-04-20 15:38:54

相關問題