Appleには、iOS 9以降のURLにForward Secrecyを使用したTLS 1.2が必要です。アプリとは別に、サーバーがすべての要件を満たしていることを確認する最良の方法は何ですか?
nscurlがまったく機能しない-または使用方法がわからない。私の出力では、サーバーが準拠していることがわかっていても、CFNetwork SSLHandshakeが失敗したと繰り返し繰り返し表示されます。
TLSToolはある程度機能しますが、Forward Secrecy(FS)暗号を強制的に使用することはできません。
opensslはクライアントモードに特定の暗号を指定できますが、私のバージョンにはFS暗号がありません。opensslをアップグレードするにはどうすればよいですか?
最良の方法は何ですか?これまでのところ、ssllabs.comのanalyze.htmlを使用する必要がありました。助言がありますか?
基本的に nscurl --ats-diagnostics <url>
は、サーバーへの接続の考えられるすべてのバリアントを試行し、各テストのPASS/FAIL結果で応答します。サーバーに合格するテストを見つけ、それに応じてATS構成を設定するだけです。
こちら ATSとサーバーのコンプライアンスの確認に関する良い記事で、nscurlの例も含まれています。
ここにリストされている方法はすべて機能しますが、手作業が必要です。私が見つけた最良の方法は、SSLラボでサーバーをテストし、結果をAppleの要件と比較することでした。これは自動化できるもののように思われたので、それだけを行うツールを作成しました: https://apptransport.info
ドメインをパラメーターとして渡すと(例 https://apptransport.info/craigslist.com )、次の情報が得られます。
nscurl
(macOS El Capitan以降で利用可能)を使用すると、--ats-tls-version
TLS 1.2への準拠を具体的にテストするためのスイッチ。例:
nscurl --ats-diagnostics --ats-tls-version TLSv1.2 <url>
これは、Perfect Forward Secrecyについてもテストします。 PFSのテストを無効にする場合は、--ats-disable-pfs
スイッチ。
nscurl --ats-diagnostics --ats-tls-version TLSv1.2 --ats-disable-pfs <url>
方法1:
テストするURLが公開されている場合は、次のような公開SSLテストサービスを使用できます。
URLを入力すると、「ハンドシェイクシミュレーション」というタイトルのセクションに「Apple ATS 9/iOS 9」がリストされ、TLS 1.2が正常にネゴシエートされたかどうか、およびどの接続暗号スイートが使用されたかが示されます。使用される暗号スイートがテクニカルATS要件の下にリストされており、TLS 1.2が正常にネゴシエートされた場合、サーバーはATS用に適切に構成されています。
方法2:(これは他の人からも言及されました)
OS X El Capitanを実行しているMacでは、ターミナルで次のコマンドを実行します。
/usr/bin/nscurl --ats-diagnostics https://<url>
コマンドを実行した後、ATS Default Connection
というラベルの付いた上部近くのセクションを探します。 PASS
の結果は、サーバーがATS用に適切に構成されていることを示します。
方法3:
一般にアクセスできないURLの場合は、 Wireshark を使用して、URLへの通信を監視します。 Wiresharkフィルターを使用して、次のTLSv1.2パケットのみを表示できます。
ssl.record.version == 0x0303
サーバーがTLSバージョン1.2用に構成されている場合は、TLSv1.2プロトコルを使用するパケットが表示されます。 URLに着信する要求を監視するときにClient Helloパケットしか表示されない場合、モバイルデバイスとURLの間でTLSv1.2がネゴシエートされていません。