web-dev-qa-db-ja.com

iOS 9でHTTPSを介してIPアドレスでサーバーに接続する場合、kCFStreamErrorDomainSSL、-9802

HTTPSを介してサーバーに接続するiOSアプリがあります。アプリが新しいiOS 9 SDKでビルドされ、iOS 9で実行された場合、次のエラーが発生します。

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

アプリは、固定された証明書でAFNetworking 1.3.4を使用します。 IPアドレスでサーバーに接続すると問題が発生します。 NSAllowsArbitraryLoads configを追加した場合、またはそのドメイン名でサーバーに接続した場合に機能します。

Tomcatコネクターは、sslEnabledProtocols = "TLSv1、TLSv1.1、TLSv1.2"で構成されます。

ホスト名を上書きする を試しましたが、何も変わらないようです。

ATSの公式ドキュメントはまだ見つかりません。 IPアドレスでの接続は機能しない可能性がありますか?

23
Ryan Fung

iOS9では、サーバーがTLSv1.2のみをサポートし、完全転送セキュリティをサポートする必要があります。

また、ハードコードされたIPアドレスを使用しないなど、アプリがIPV6をサポートする必要があります。 NSURLSessionを使用することをお勧めします。それ以外の場合は、アプリのplistで例外を追加する必要があります。

WWDC-15セッション「セキュリティとアプリ」を参照してください。

詳細については Steven Peterson's Blog も参照してください。

29
zaph

これを「Info.plist」ファイルに追加すると、保護されていない接続が許可されます。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
5
comonitos

IOS 9のデフォルトのApp Transport Security要件を完全に満たすためのサーバー上の正確な新しい要件のチェックリストを含む別のスタックオーバーフローの答えが見つかりました: iOS 9セキュリティサーバー要件チェックリスト

お役に立てば幸いです。

3
Litome

私はしばらくこれに固執し、Info.plistのすべてのトリックを試しましたが、まだエラーがありました:

HTTP load failed (kCFStreamErrorDomainSSL, -9813)

開発中のlocalhostサーバーに接続しようとしたとき。

自己署名証明書で提供されるAPIに接続するリアクティブネイティブプロジェクトを使用してローカルで開発しました。証明書を信頼するようにシステムを設定しましたが、IOSシミュレーターこのエラーを回避するために、信頼できる証明書を受け入れます。

シミュレータのホーム画面で、証明書ファイルをシミュレータにドラッグして、証明書プロファイルを追加するように促すことができるはずです。または、シミュレーターのサファリブラウザーのローカルホストURLを介して証明書にアクセスできる場合、サファリを介して証明書を受け入れることができる場合があります。

これがクリックされる前に私が円を描いて回ったとき、これが誰かの助けになることを願っています!

2
DamienB

ソリューション1:

work aroundを探している場合は、以下のアプローチを使用します。

  1. NSAllowsArbitraryLoadsタイプbooleanのキーを値true

Info.plistファイルは次のようになります。

Screenshot 1

ただし、このアプローチは、すべての安全でない接続を許可するためお勧めしません。

ソリューション2:

SSL certificate that you apply on Server should be of type TLSv2.0 minimum since iOS 10 requires this.を確認してください link 詳細について。

  1. 追加NSIncludesSubdomainsタイプbooleanのキーと値true
  2. NSTemporaryExceptionAllowsInsecureHTTPLoadsタイプbooleanのキーを値true
  3. NSTemporaryExceptionMinimumTLSVersionタイプStringのキーと値TLSv1.2

Info.plistファイルは次のようになります。

Screenshot 2

1