これが以前に回答されている場合は、まずご容赦ください。私はたくさんの投稿を行ってきましたが、どれも私を助けてくれませんでした。
つまり、フレームワーク クラスをサブクラス化して、証明書の検証プロセスにフックしようとしていないということです。
私は Swift3.1/iOS プログラミングに不慣れで、それに慣れるためにアプリケーションを作成しています。
ここでAppleのドキュメントを確認しましたhttps://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW34
Info.plist で多くの設定を試しましたが、どれも機能しません。奇妙なことに、昨日はうまくいきました。
これが私のInfo.plistファイルの関連テキストです
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>example.net</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
私も試してみました
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
サーバーには、CA によって署名された証明書があります。私はこれが問題だと推測していますが、TLSv1.2 を厳密に適用しているわけではありません。私はこの問題を彼らに知らせましたが、彼らはまだ問題を解決していません。それが本当に紛らわしい部分です。紛らわしい部分は、昨日はうまくいったということです。動作中のアプリをデバイスに展開することさえできました。私はそれを自分のデバイスに再度展開して、機能するかどうかを確認し、機能しないため、持っていたと言います:(。
データをプルするために使用しているコードは次のとおりです
let url = URL(string: "https://public.example.net/index.txt")
let indexText = try! String.init(contentsOf: url!, encoding: String.Encoding.utf8)
次のエラーが表示されます
2016-11-25 15:27:54.051 ExamleApp[12722:1108324] NSURLSession/NSURLConnection HTTP ロードに失敗しました (kCFStreamErrorDomainSSL、-9813) エラー Domain=NSCocoaErrorDomain Code=256 UserInfo={NSURL= https://public.example.net/index.txt }
iOS シミュレーターと iPhone 6+ の両方でこれを試しましたが、同じエラーが発生しました。デバイスまたはシミュレーターの Safari で Web サイトにアクセスすると、証明書を信頼した後、サイトは正常に表示されましたが、アプリは機能しません。
また、URL はサニタイズされているため、それが発見された場合でも問題には関係ありません。
私の問題をご覧いただきありがとうございます。間違っている可能性のあるアイデアがあれば、光を当ててください。
タイソン