技術論文:ネットワーク SSL/TLS のベストプラクティス

概要

この技術論文は、 ADCの熟練者がQualys SSL LabsでA+グレードを取得するための一般的な実装として何を構成するかを伝えることを目的としています。

Qualys SSL Labs は堅牢な一連のテストを実行し、構成を改善するために使用できるスコアカードを提供します。スキャンは無料で、完了までに約 1 分かかります。

QualysはSSL Labsを積極的に開発しています。新しいプロトコルが作成され、脆弱性が検出されると、テストが変更される可能性があります。サイトを定期的にテストして、新しい脆弱性が公開されていないことを確認することをお勧めします。

注: 展開については、セキュリティチームに相談してください。セキュリティの専門家は、SSL Labs A+は一般的なターゲットとしては良いと言いますが、組織のニーズに合わないかもしれません。

検証が必要な構成項目

  • 証明書 -完全なチェーンが提供され、信頼されていますか? 署名アルゴリズムは安全ですか?
  • プロトコル、キー、暗号のサポート -どのSSLおよびTLSプロトコルのバージョンがサポートされていますか? どの暗号スイートが好まれていて、どのような順序ですか? 提供された暗号スイートは前方秘密をサポートしていますか?
  • TLS ハンドシェイクシミュレーション -複数の異なるクライアントとブラウザによってネゴシエートされるプロトコルと暗号を決定します
  • プロトコルの詳細 -セキュア再ネゴシエーションはサポートされていますか?厳格なトランスポートセキュリティ(HSTS)はサポートされていますか?
  • 既知の脆弱性 -サーバーはPOODLE、BEAST、またはTLSダウングレードなどの攻撃に対して脆弱ですか?

SSL Labs がテストを完了すると、4 つのカテゴリそれぞれについて、レターグレードとポイントスケールが表示されます。

1 Certificate
2 Protocol Support
3 Key Exchange
4 Cipher Strength

各カテゴリは数値スコアを受け取り、SSL Labs はそのスコアを平均して合計にします。SSLv3 を有効にするなど、SSL Labs が推奨しない特殊なケースや設定によっては、最終的な成績が制限される可能性があります。SSL Labs がサーバーを格付けする方法に関する完全なドキュメントは、 こちらにあります。

実装に関する懸念

SSL プロファイル

この記事では SSL プロファイルを使用しています。SSL プロファイルを最初に有効にすると、 すべての SSL 仮想サーバーがデフォルトプロファイルを使用するように設定されます。

SSL プロファイルは、グローバルおよび仮想サーバごとの SSL パラメータよりも優先されます。

クライアントサポート

この記事の構成手順の一部は、古いクライアントとブラウザとの接続の問題を引き起こす可能性があります。たとえば、Windows 7および8.1のInternet Explorer 11は古い暗号スイートのみをサポートし、他の古いブラウザではTLS1.2およびECC暗号を完全にサポートしていない可能性があります。サポートがない場合、クライアントにエラーメッセージが表示され、サイトを表示できなくなる可能性があります。

SSL Labsのフロントページには、ニーズを判断するのに役立つ「ブラウザをテストする」ボタンがあります。

Gateway展開におけるCitrix Receiver/Workspaceアプリの暗号サポート

仮想アプリケーションおよびデスクトップ用のゲートウェイ仮想サーバーを展開する際のクライアント暗号サポートに関する次の記事を確認してください。

注:特定のADCファームウェアに関する必要なビルドやその他の注意事項については 、「ファームウェアノート」セクションを参照してください。

基本手順-GUI

SSL Labs テストでハイスコアを獲得するには、次の手順を実行します。

  • ADCが最新のファームウェアリリースを実行していることを確認します。TLS1.3ハードウェアアクセラレーションを利用するには、13.0ビルド7.1以降を推奨します

  • 証明書チェーンが完全で信頼されていることを確認する

    • ルート CA は常に証明書に直接署名するわけではありません。代わりに、ルート CA は証明書に署名するために仲介者を使用することがよくあります
    • 中間証明書を ADC にインストールします。仮想サーバーにバインドしたサーバー証明書にリンクします
    • 中間証明書は、サーバー証明書を提供するベンダーによって提供され、多くの場合「証明書バンドル」で提供されます。それらは通常、ベンダーの公開サイトで見つけることができます
    • 複数の中間証明書をインストールしてリンクする必要がある場合があります。サーバー証明書が機能するには、ADCが完全なチェーンを送信する必要があります。完全なチェーンは、クライアントの信頼されたルート CA の 1 つによって署名された証明書で終わります
    • クライアントにはすでに信頼されたルートCAがあるため、ADCにインストールしてリンクする必要はありません
    • 中間証明書をインストールするには、[ トラフィック管理] > [SSL] > [証明書] > [CA証明書 ] に移動し、[ インストール ] を選択します(注: 以前のビルドのCitrix ADCには、GUIに [CA証明書] オプションがありません)。
    • 証明書を選択し、アクションメニューから [リンク] を選択して、 中間をリンクします
    • 正しい中間証明書がインストールされている場合、リンクメニューに自動的に入力されます

CA 証明書のインストール

証明書リンク

証明書リンク済み

  • Forward Secrecy (FS) を提供するカスタム暗号グループを作成する
    • [ トラフィック管理] > [SSL] > [暗号グループ ] の順に選択し、[ 追加] を選択します。
    • 暗号グループに「SSL_LABS_cipher_group_Q4_2021」という名前を付けます
    • [ 追加 ] をクリックして [ すべて ] セクションを展開し、次の暗号スイートを選択します。
      • TLS1.3-AES256-GCM-SHA384
      • TLS1.3-AES128-GCM-SHA256
      • TLS1.3-CHACHA20-POLY1305-SHA256
      • TLS1.2-ECDHE-ECDSA-AES256-GCM-SHA384
      • TLS1.2-ECDHE-ECDSA-AES128-GCM-SHA256
      • TLS1.2-ECDHE-ECDSA-AES256-SHA384
      • TLS1.2-ECDHE-RSA-AES256-GCM-SHA384
    • > 右矢印をクリックして、暗号を [ 使用可能 ] 列から [ 構成済み ] 列に移動します。
    • [ 作成] をクリックします。

グループを作成

  • SSL プロファイルを有効にする

[ トラフィック管理] > [SSL] > [SSL の詳細設定の変更] に移動し、下にスクロールして [ デフォルトプロファイルを有効にする] を選択します。

Enable_Default_Profile

SSL プロファイルは、 すべての SSL 仮想サーバーを最初に有効にしたときにデフォルトプロファイルを使用するように設定します。仮想サーバーごとの既存のSSL設定が削除されると、ADCは確認を求めます。

Confirm_Default_Profile

  • SSL プロファイルを作成する
    • [ システム] > [プロファイル] > [SSL プロファイル] に移動し、[ 追加
      ]を選択しますSSL_Profile-プロファイルに 「SSL_LABS_PROFILE_Q4_2021」 という名前を付けます -[ SSL 再ネゴシエーションを拒否する ] までスクロールし、[ NONSECURE ] を選択して、RFC 5746 をサポートするクライアントのみに再ネゴシエーションを許可します -[ HSTS] までスクロールします、[ HSTS] にチェックマークを付け、[ 最大経過時間 ] に 157680000 秒を指定します。[ プロトコル ] までスクロールして、[TLSv12] と [TLSv13 SSL_profile_protocol ] のみを選択します。 フォームの最後までスクロールして [OK ] を選択します。SSL Ciphersをクリックし、編集する鉛筆アイコンを選択し、[すべて削除 ] をクリックします-[ 追加 ] をクリックして、前に作成した暗号グループを追加します SSL_profile_cipher_list - フォームの最後までスクロールして [ 完了] を選択します
  • SSL プロファイルを SSL 仮想サーバーにバインドする
    • 選択した仮想サーバーで、 鉛筆アイコンを選択してバインドされたSSLプロファイルを編集します
    • 作成したSSLプロファイルをドロップダウンリストから選択します
    • OK をクリックします。

基本ステップ:CLI

SSL Labs テストでハイスコアを獲得するには、次の手順を実行します。

以下の CLI の例では、SSL 仮想サーバの名前が ex-vServer としてリストされています。これは、環境内の SSL 仮想サーバの名前に置き換えることができます。

  • ECDHE および ECDSA 暗号スイートを優先するカスタム暗号グループを作成する
add ssl cipher SSL_Labs_Cipher_Group_Q4_2021

bind ssl cipher SSL_Labs_Cipher_Group_Q4_2021 -cipherName TLS1.3-AES256-GCM-SHA384

bind ssl cipher SSL_Labs_Cipher_Group_Q4_2021 -cipherName TLS1.3-AES128-GCM-SHA256

bind ssl cipher SSL_Labs_Cipher_Group_Q4_2021 -cipherName TLS1.3-CHACHA20-POLY1305-SHA256

bind ssl cipher SSL_Labs_Cipher_Group_Q4_2021 -cipherName TLS1.2-ECDHE-ECDSA-AES256-GCM-SHA384

bind ssl cipher SSL_Labs_Cipher_Group_Q4_2021 -cipherName TLS1.2-ECDHE-ECDSA-AES128-GCM-SHA256

bind ssl cipher SSL_Labs_Cipher_Group_Q4_2021 -cipherName TLS1.2-ECDHE-ECDSA-AES256-SHA384

bind ssl cipher SSL_Labs_Cipher_Group_Q4_2021 -cipherName TLS1.2-ECDHE-RSA-AES256-GCM-SHA384
<!--NeedCopy-->
  • SSL プロファイルを有効にする
set ssl parameter -defaultProfile ENABLED
<!--NeedCopy-->
  • SSL プロファイルを作成する
add ssl profile SSL_Labs_Profile_Q4_2021 -tls1 DISABLED -tls11 DISABLED -tls12 ENABLED -tls13 ENABLED -denySSLReneg NONSECURE
<!--NeedCopy-->
  • SSL プロファイルからデフォルトの暗号グループをバインド解除し、カスタムグループをバインドします。
unbind ssl profile SSL_Labs_Profile_Q4_2021 -cipherName DEFAULT

bind ssl profile SSL_Labs_Profile_Q4_2021 -cipherName SSL_Labs_Cipher_Group_Q4_2021
<!--NeedCopy-->
  • SSL プロファイルを SSL 仮想サーバーにバインドする
set ssl vserver "Ex-vServer" -sslProfile SSL_Labs_Profile_Q4_2021
<!--NeedCopy-->

その他の設定

SHA1 証明書

SHA1 で署名された証明書は弱いとみなされ、SSL Labs テストで高品位になるのを防ぎます。SHA1で署名された証明書がある場合は、SHA256証明書に置き換えて、ADCにインストールする必要があります。

DNS CAA

DNS 証明機関認証 (CAA) を使用すると、CA がドメインの証明書を発行する権限があるかどうかを検証し、問題が発生した場合に連絡先を提供できます。

DNS CAA は SSL Labsの A+ には必要なく、オプションの手順です。DNS CAA の詳細については、こちらをご覧ください。

従来のクライアントサポート

このガイドで使用する ECDHE 暗号は、古い低速の DHE 暗号を置き換えます。アップグレードできないレガシークライアントがある場合は、DHE を有効にするしかないかもしれません。

DHE 暗号スイートは、次の手順で有効にできます。

  • DH キーを作成して SSL プロファイルにバインドする
create ssl dhparam DH_Key_Name_Here.key 2048 -gen 2

set ssl profile SSL_Labs_Profile_Q4_2021 -dh ENABLED -dhFile DH_Key_Name_Here.key
<!--NeedCopy-->
  • DHE 暗号スイートを先ほど作成した暗号グループにバインドする
bind ssl cipher SSL_Labs_Cipher_Group_Q4_2021 -cipherName TLS1.2-DHE-RSA-AES256-GCM-SHA384
<!--NeedCopy-->

ファームウェアに関する注意事項

  • Citrix は、 ファームウェアバージョン10.5ビルド57でTLS1.2をデフォルトとして有効にしました

  • ROBOT の脆弱性は、ビルド 12.0 ビルド 53、11.1 ビルド 56、11.0 ビルド 71、10.5 ビルド 67 で対処されました。 詳細については、こちらをご覧ください

  • 12.0 ビルド 35 で HSTS (Strict Transport Security) フラグが使用可能になりました。以前のビルドでは、HSTS ヘッダーを挿入するための書き換えポリシーが必要でした。 両方をADCとして使用して2つのヘッダーを挿入することはできませんが 、これは許可されていません。

  • 10.5ビルド57でVPXアプライアンスにTLS1.2のサポートが追加されました。専用のSSLハードウェアを搭載したアプライアンス用の以前のビルドで利用可能でした

  • 12.1 ビルド 49.23 で TLS1.3 のサポートが追加されました。vServer\ sslProfile で有効にし、TLS1.3 暗号 (リストされている) をバインドする必要があります

  • 12.0ビルド57では、ECC証明書のサポートがVPXアプライアンスに追加されました。専用のSSLハードウェアを搭載したアプライアンス用の以前のビルドで利用可能でした

  • ゾンビ POODLE 脆弱性は、ビルド 12.1 ビルド 50.31、12.0 ビルド 60.9、11.1 ビルド 60.14、11.0 ビルド 72.17、および 10.5 ビルド 69.5で解決されました。この脆弱性は、Nitrox SSLハードウェアを搭載したMPX/SDXアプライアンスにのみ影響します。コレトクリークを搭載したMPX\ SDXアプライアンスは脆弱ではありません。CBC ベースの暗号スイートを無効にすると、この脆弱性も緩和されます。詳細については CTX の記事を参照してください。

  • CBCの弱点に対処するために暗号リストが変更され、0xc028および0x39暗号が削除されました

  • Citrix は13.0ビルド71にTLS1.3ハードウェアアクセラレーションを追加しました

技術論文:ネットワーク SSL/TLS のベストプラクティス