質問: [NSURLCredential credentialWithIdentity:identityRef certificates:nil persistence:NSURLCredentialPersistenceNone]; NSLog(@"%@", credential); //認証送信(?) [challenge.sender useCredential:credential forAuthenticationChallenge:challenge]; if (importedItems != NULL) CFRelease(importedItems); } } } ### 補足情報(言語/FW/ツール等のバージョンなど) ●言語 Objective-C ●開発環境 Xcode8.2.1 ●iOS iOS10.2 些細なことでも良いので情報を頂けると助かります。 よろしくお願いいたします。
回答: 参考にされているサイトが古すぎるように思われます。 iOSは9.0以降からATS(App Transport Security)が導入されています。 これはセキュアな通信を確保するための仕組みです。 デフォルトは有効で、無効にするにはinfo.plistで設定しないといけません。 詳しくは以下のサイトを参考にしてください。 http://www.lac.co.jp/blog/category/security/20161017.html > > 1オレオレサーバ証明書を使用した認証 > > > ATSでもオレオレサーバ証明書を使用することも可能ですが、ATSの要件に含まれる暗号強度で証明書を作成し、 端末にルート証明書をインストールする必要があります。 また、サーバ側の暗号化スイートも楕円暗号に対応したものでなくてはいけません。 前述のURLをご覧ください。 ATSが導入されて何度か経験したのが、ロードバランサーのSSLアクセラレータが 楕円暗号に対応していないものがあったり、楕円暗号では速度が出ない場合があります。 注意してください。 > > 2クライアント証明書を使用した認証 > > > おそらくATSによって1がブロックされて2に進んでいないのだと思います。 ただし、NSURLConnectionではなくNSURLSessionを使用すべきです。 NSURLConnectionを使用したアプリは2016年6月1日以降はAppStoreの審査に通らなくなっています。 AppStoreに掲載しないにしても、deprecatedなので新規に作成するアプリで使用すべきではありません。 NSURLSessionでクライアント証明書を使用する方法には以下のteratailの過去の質問が参考になります。 > > 3その他 > > > 認証のデリゲートメソッドで正しく認証された結果が返ればGET要求が継続されるはずです。