0

iOS 9 -- Xcode 7 beta 5 でアプリを実行しようとしています。私の URL は https ですが、NSURL 接続はまだエラーをスローしています:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)

これを機能させるために例外を使用しないようにしています。私のサーバーは必要なプロトコルをサポートしています: https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html

ありがとう...

更新:リリース ノートは、DHE_RSA 暗号のデフォルト サポートを削除したことを示しています。

「TLS クライアントの Secure Transport では、DHE_RSA 暗号スイートがデフォルトで無効になりました。これにより、DHE_RSA 暗号スイートのみをサポートする TLS サーバーへの接続に失敗する可能性があります。SSLSetEnabledCiphers を使用して明示的に暗号スイートを有効にするアプリは影響を受けず、引き続き DHE_RSA 暗号スイートを使用します。明示的に有効にした場合。」

これらは私のサーバーでサポートされている暗号です。ここで完全なリストを参照してください: https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html

したがって、すべての NSURLConnection に SSLSetEnabledCiphers を使用するか、サーバーをアップグレードして DHE_ECDSA 暗号をサポートする必要があると思います。または、今のところ例外メカニズムを使用してください。

私が逃したものはありますか?また、SSLSetEnabledCiphers を使用するためのサンプル コードを入手した人はいますか?

ありがとう。

4

1 に答える 1

0

これが取引です。デフォルトでサポートされていない DHE_RSA 暗号スイートに関する無害な文言は、ベータ 5 での Apple によるかなり大きな変更です。そこにある多くのサーバーは、デフォルトで ECDHE_ECDSA 暗号をサポートしていません。サーバーでこれらの暗号をサポートするには、何かまたはいくつかの何かをアップグレードする必要があるようです。または、何かを再コンパイルすることさえできます。わかりました。

そして、すべての URL が HTTPS であることを確認するだけでよいと思いました。

具体的には、info.plist の「NSExceptionRequiresForwardSecrecy = NO」キーを使用して、サーバーへの HTTPS のみのリンクをサポートすることができました。また、必要に応じて「NSIncludesSubdomains = YES」キーを忘れないでください。

特に Diffie-Helmen Exchange、Elliptical Curve、および Forward Secrecy に慣れていない場合に役立つ背景情報:

http://blog.ivanristic.com/2013/08/configuring-apache-nginx-and-openssl-for-forward-secrecy.html

http://blog.lowsnr.net/2014/10/26/configuring-apache-2-2-ssltls-for-forward-secrecy/

于 2015-08-16T03:29:58.657 に答える