SSLを介して当社のWebサーバーに接続するアプリケーションがあります。 それが正常に動作しますが、時々サーバにアプリケーション(私たちはロード要求のためURLSessionを使用)によって送信される要求の一部はURLSessionに(失敗するほとんどの時間:iOS11で使用されているTLSとkCFStreamErrorCodeKey = -9800
:次のエラーで:) didCompleteWithError:タスクError Domain=SyncCPConnectionErrorDomain Code=12 "(null)" UserInfo={ErrorMessageKey=Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo={_kCFStreamErrorCodeKey=-9800, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?
問題をデバッグして(TCPダンプを使用して)、次のように表示しました。
SSLハンドシェイクTLS 1.0では、アプリケーションがOSレベルでこれを制御できないため、最小と最大SSLバージョンとして、ハンドシェイクは正常に終了します。
他の接続では、アプリケーションはTLS 1.0を最小バージョンとして、TLS 1.2を最大バージョンとして提供します。その後、ハンドシェイクはバージョンTLS 1.2で正常終了します。
TLS 1.0では完全なハンドシェイクが行われることがあり、TLS 1.2では再開されたハンドシェイクが実行されることがありました。
バージョン間でチェックサムアルゴリズムが異なるため、クライアントはおそらく混乱したり、少なくともチェックサム定義に関してサーバーとは一致しません。次に、クライアント(アプリケーション)は、「Illegal Params」という致命的な警告で接続を終了します。この時点で、アプリケーション接続の1つで-9800 SSLエラーが発生したとします。
私たちのサーバは、TLS 1.2を優先するように設定されていますが、古いTLSバージョン(1.0)もサポートしています。
我々はと我々のアプリケーション のApp交通安全(ATS)で構成されていた最初の時:NSAllowsArbitraryLoads =真
私たちは、それを削除し、それが常にTLS 1.2を使用するようにアプリケーションを強制すると思ったが、それを助けてくれなかった。 我々はiOS11で、アプリケーションがTLS 1.2でのみ動作する必要があることをAppleの状態ことを知っているが、我々は、これはここで、このような現象を引き起こす可能性がありますどのような任意のアイデア 場合ではないことを参照してください?またはこの問題を解決する方法は?
ありがとうございました。