2012-05-14 108 views
6

第三方應用程序可以訪問iPhone的鑰匙串以便爲其添加X509證書嗎?如果是,那該怎麼辦?
如果不是,它可以訪問鑰匙串只是爲了從中讀取證書嗎?在iPhone的鑰匙串中存儲和訪問x509證書

基本上,我需要的是:
1)我的應用程序需要訪問https站點,它使用的證書不是由任何可信CA簽名的證書。當試圖通過https連接時,我得到一個異常。
2)這將是偉大的如果我可以以編程方式將根證書添加到鑰匙串;如果用戶可以通過Safari訪問網站,接受其證書,然後使用我的應用程序訪問網站,那就足夠了。

到目前爲止,我一直在使用下面的界面超過HTTPS:

@interface NSURLRequest (DummyInterface) 
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host; 
+ (void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString*)host; 
@end 

但是這不正是我想要的。

有什麼建議嗎?

回答

3

This Apple document應記錄足夠的內容以允許將自簽名證書(或自簽名證書頒發機構)添加到鑰匙串中,並使其可信。雖然我沒有測試它。請參閱top answer on this question。但是,它似乎並未真正驗證證書的有效性。 Cocoanetics也記錄了how to use NSURLConnection with self-signed certificates,同樣也似乎沒有驗證有效性。

所以,你幾乎肯定要遵循蘋果的指示。 「從* .P12文件中提取和評估身份」部分似乎包含有關如何導入證書的完整示例,即使是使用密碼保護的證書也是如此。

"AdvancedURLConnections" sample codeServerTrustChallengeHandler類相結合,你應該很好去。


這裏還有a more complete example by Vanja Komadinović

+0

我還沒有測試過,但只要我有機會 – Maggie