Mac 10.6 sdkに対して構築された従来のアプリケーションがあります。我々は、Web呼び出しを行うためにNSURLMutableRequest
とNSURLConnection
を使用しています。 Wiresharkを使用して、私は10.9 - 10.11.2でこれらの呼び出しがすべてTLSv1上で行われることに気付きました。 10.11.6以降(また、10.13ベータ)これらは、TLSv1.2で作成されます。NSURLConnectionを使用している場合、Mac OS 10.9のデフォルトのSSLLevel
CFURLRequestSetSSLProperties
(dlsym)を使用してコードをTLSv1.2に変更しました。私はkCFStreamSSLLevel
を "kCFStreamSocketSecurityLevelTLSv1_2
"に設定しました。これらの後、私はTLSv1.2上で呼び出しが行われるのを見ることができます。
kCFStreamSSLLevel
上アップルのドキュメントから:デフォルトで
、ストリームのセキュリティレベルが kCFStreamSocketSecurityLevelNegotiatedSSLです。
とkCFStreamSocketSecurityLevelNegotiatedSSL
から:
は がネゴシエートすることができる最高レベルのセキュリティプロトコルはソケット・ストリームのためのセキュリティプロトコルとして設定することを指定します。
TLSv1.2は10.9でサポートされています。テストとして、私は kCFStreamSocketSecurityLevelNegotiatedSSL
にkCFStreamSSLLevel
を設定し、10.9に、それはまだTLSv1のへの呼び出しを行いました。
私は2つの質問がある:呼び出しが10.9-10.11.2ためTLSv1のに作られますなぜ
?利用可能な最高のバージョン、つまりTLSv1.2を自動的に選択するべきではありません。
kCFStreamSocketSecurityLevelTLSv1_2
を使用して、そこにサーバがTLSv1.2をサポートしていない場合のバージョンを下げるためにフォールバックまたはコールが単純に失敗しているのですか?両方のセットのために、ストリーム プロパティ値とコピー操作:
kCFStreamSocketSecurityLevelNegotiatedSSL
ディスカッション: 私はこのしばらくのチェックを発見しました。 TLS またはSSLを使用してバージョンを下げることを示します。これは、 インスタンスのHTTPSの動作です。
kCFStreamSocketSecurityLevelTLSv1_2
あるいはkCFStreamSocketSecurityLevelTLSv1
には、このような宣言がありません。それで、彼らはバージョンを下げるためにフォールバックするかどうか?