23

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

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

アプリは、ピン留めされた証明書で AFNetworking 1.3.4 を使用します。IP アドレスを使用してサーバーに接続すると、問題が発生します。NSallowArbitraryLoads 構成を追加するか、ドメイン名でサーバーに接続すると機能します。

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

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

ATS に関する公式ドキュメントはまだあまり見つかりません。IPアドレスでの接続はうまくいかないのでしょうか?

4

5 に答える 5

29

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

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

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

詳細については、 Steven Peterson のブログも参照してください。

于 2015-06-11T11:13:33.887 に答える
5

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

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
于 2015-10-27T06:32:30.097 に答える
3

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

それが役立つことを願っています。

于 2015-08-20T10:25:38.330 に答える
2

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

HTTP load failed (kCFStreamErrorDomainSSL, -9813)

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

自己署名証明書が提供される API に接続する反応ネイティブ プロジェクトを使用してローカルで開発しています。証明書を信頼するようにシステムを設定していましたが、IOS シミュレーターが自分の証明書を信頼できるものとして受け入れる必要があることに気付くまでに少し時間がかかりました。このエラー。

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

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

于 2016-09-23T11:28:58.507 に答える
1

解決策 1 :

あなたが探しているならwork around、以下のアプローチを使用してください:

  1. 値がtrue のboolean型のNSallowArbitraryLoadsキーを追加します。

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

スクリーンショット 1

ただし、この方法は非セキュアな接続をすべて許可するため、お勧めできません。

解決策 2 :

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

  1. 値がtrue のブール型のNSIncludesSubdomainsキーを追加します
  2. 値がtrue のブール型のNSTemporaryExceptionallowsInsecureHTTPLoadsキーを追加します
  3. 値がTLSv1.2のString型のNSTemporaryExceptionMinimumTLSVersionキーを追加します

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

スクリーンショット 2

于 2017-07-25T09:37:13.010 に答える