web-dev-qa-db-ja.com

AppleのATS / TLS 1.2要件に対するサーバーのコンプライアンスを確認するための最良の方法

Appleには、iOS 9以降のURLにForward Secrecyを使用したTLS 1.2が必要です。アプリとは別に、サーバーがすべての要件を満たしていることを確認する最良の方法は何ですか?

nscurlがまったく機能しない-または使用方法がわからない。私の出力では、サーバーが準拠していることがわかっていても、CFNetwork SSLHandshakeが失敗したと繰り返し繰り返し表示されます。

TLSToolはある程度機能しますが、Forward Secrecy(FS)暗号を強制的に使用することはできません。

opensslはクライアントモードに特定の暗号を指定できますが、私のバージョンにはFS暗号がありません。opensslをアップグレードするにはどうすればよいですか?

最良の方法は何ですか?これまでのところ、ssllabs.comのanalyze.htmlを使用する必要がありました。助言がありますか?

17
Hampden123

基本的に nscurl --ats-diagnostics <url>は、サーバーへの接続の考えられるすべてのバリアントを試行し、各テストのPASS/FAIL結果で応答します。サーバーに合格するテストを見つけ、それに応じてATS構成を設定するだけです。

こちら ATSとサーバーのコンプライアンスの確認に関する良い記事で、nscurlの例も含まれています。

43
Alex Skalozub

ここにリストされている方法はすべて機能しますが、手作業が必要です。私が見つけた最良の方法は、SSLラボでサーバーをテストし、結果をAppleの要件と比較することでした。これは自動化できるもののように思われたので、それだけを行うツールを作成しました: https://apptransport.info

ドメインをパラメーターとして渡すと(例 https://apptransport.info/craigslist.com )、次の情報が得られます。

  1. サーバーがATSに準拠しているかどうか
  2. 必要に応じてサーバーを修正する方法
  3. 必要に応じてATS例外を追加する方法
  4. SSLラボの結果
12
vf_jeff

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>

2
Ryan H.

方法1:

テストするURLが公開されている場合は、次のような公開SSLテストサービスを使用できます。

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がネゴシエートされていません。

wireshark_screenshot

1
slayernoah