web-dev-qa-db-ja.com

xCode 9-iOS 11:NSURLConnection-sendAsynchronousRequestが失敗する

XCodeの最新バージョン(9.0ベータ(9M136h))をダウンロードしました。

ただし、iOS 11シミュレーターでサーバーに要求を行おうとすると(NSURLConnection sendAsynchronousRequestを使用)、エラーが表示されます。

NSURLSession/NSURLConnection HTTPロードに失敗しました(kCFStreamErrorDomainSSL、-9807)NSURLConnectionがエラーで終了しました-コード-1202

NSErrorオブジェクトには次のメッセージが含まれます-@ "NSLocalizedDescription":@ "このサーバーの証明書は無効です。「***」のふりをしているサーバーに接続している可能性があり、機密情報が危険にさらされる可能性があります。」

Plistには以下が含まれます。

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

この場合、問題ではありません(私は推測します)

言うまでもなく、iOS 10/9/8で動作しています

助言がありますか?

前もって感謝します!

17
dor506

iOS 11でこのエラーが発生するすべてのユーザーについては、サーバーで有効な(セキュリティで保護された)証明書に対して作業していることを確認してください。

私たちの場合、証明書は厳密ではありませんでした。

サーバー担当者が新しい有効な証明書を統合すると、問題はなくなりました。

証明書が保護されているかどうかを確認する1つの方法は、ブラウザーで問題のあるリンクを通過することです。

その結果、接続が保護されていないことがわかります。

enter image description here

1
dor506

アプリケーションでHTTP(Sなし)接続を実行できるようにする必要があります。デフォルトでは、AppleはHTTPSのみを許可します。

  1. info.plistにアクセスします

    here

  2. 次に、いずれかのプラスアイコンを押します
  3. 「App Transport Security Settings」を検索します here
  4. 左の小さな矢印をクリックして「任意のロードを許可する」を見つけます。デフォルトでは「NO」に設定されており、「YES」に変更されます
6
Carter4502

無効な証明書エラーが発生したため、個人的なセキュリティ対策に基づいて次の提案を行います。

まだCAとのサービス条件に同意している場合は、新しい有効な証明書の発行を依頼してください。

キーチェーンの設定を確認し、CA証明書が欠落していないことを確認してください。

または、テスト目的で独自の自己署名証明書を発行し、それをトラストアンカーとしてローカルキーチェーンに追加することもできます。 「自己署名x509証明書の作成方法」を検索すると、役に立つと思われるものが返されます。

0
DannyNiu