iPhone SDKのNSURLConnectionでオレオレ証明書を許可する方法

とあるサーバーにPOSTのリクエストを送信した所、エラーになるのであれこれ悩んでたんだけれど、要するにSSLが自己証明書だったため、エラーになってしまったというオチだった。

ちょっとググるとみなさん苦労されているようで、以下のようなカテゴリを実装する事で回避はできるようになった。

http://www.phapper.com/Default.aspx?g=posts&m=8

1
2
3
4
5
6
@implementation NSURLRequest(NSHTTPURLRequest)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
     return YES; // Or whatever logic
}
@end

同じサーバーにMobile Safariでアクセスすると、証明書の不備を伝えるアラートが出て、このまま通信を進めるか、キャンセルするか選択できるようになってますな。特定のサーバーとの通信ならまだしも、不特定のURLを扱うようなアプリの場合、ちゃんとエラーハンドリングした方が良さそう。