バックエンドが安全な接続を使用している場合は、NSURLSession を使用して取得します
CFNetwork SSLHandshake failed (-9801)
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9801)
特にATSバージョンとSSL証明書情報を取得するには、サーバー構成を確認する必要があります:
サーバーがATSの最小要件(v1.2)を満たしていない場合(またはサーバー側を修正することをお勧めします)に備えて、設定して安全でない接続を許可するだけでなく、セキュリティNSExceptionAllowsInsecureHTTPLoads = YES
の低下を許可する必要があります。
単一サーバーへの低いセキュリティの許可
<key>NSExceptionDomains</key>
<dict>
<key>api.yourDomaine.com</key>
<dict>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
openssl クライアントを使用して証明書を調査し、openssl クライアントを使用してサーバー構成を取得します。
openssl s_client -connect api.yourDomaine.com:port //(you may need to specify port or to try with https://... or www.)
..最後に見つける
SSL-Session:
Protocol : TLSv1
Cipher : AES256-SHA
Session-ID: //
Session-ID-ctx:
Master-Key: //
Key-Arg : None
Start Time: 1449693038
Timeout : 300 (sec)
Verify return code: 0 (ok)
App Transport Security (ATS) には、Transport Layer Security (TLS) プロトコル バージョン 1.2 が必要です。
ATS を使用して接続するための要件:
App Transport Security (ATS) を使用するための Web サービス接続の要件には、次のように、サーバー、接続暗号、および証明書が含まれます。
証明書は、次のタイプのキーのいずれかで署名する必要があります。
ダイジェスト長が 256 以上の Secure Hash Algorithm 2 (SHA-2) キー (つまり、SHA-256 以上)
サイズが 256 ビット以上の楕円曲線暗号 (ECC) キー
2048 ビット以上の長さの Rivest-Shamir-Adleman (RSA) キー 証明書が無効な場合、ハード エラーが発生し、接続できなくなります。
次の接続暗号は、前方秘匿性 (FS) をサポートし、ATS で動作します。
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
更新: openssl は最小限のプロトコル バージョンのみを提供することが判明しました Protocol : TLSv1 リンク