技術論文:ネットワーク 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アプリの暗号サポート
仮想アプリケーションおよびデスクトップ用のゲートウェイ仮想サーバーを展開する際のクライアント暗号サポートに関する次の記事を確認してください。
- Citrix Receiver[用のCTX234227およびCTX232266](https://support.citrix.com/article/CTX232266)
- ワークスペースアプリ用CTX250104
注:特定の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証明書] オプションがありません)。
- 証明書を選択し、アクションメニューから [リンク] を選択して、中間をリンクします。
- 正しい中間証明書がインストールされている場合、リンクメニューに自動的に入力されます
- 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 の詳細設定の変更] に移動し、下にスクロールして [デフォルトプロファイルを有効にする] を選択します。
SSL プロファイルは、すべてのSSL 仮想サーバーを最初に有効にしたときにデフォルトプロファイルを使用するように設定します。仮想サーバーごとの既存のSSL設定が削除されると、ADCは確認を求めます。
- SSL プロファイルを作成する
- [システム] > [プロファイル] > [SSL プロファイル] に移動し、[追加
]を選択します「SSL_LABS_PROFILE_Q4_2021」 という名前を付けます -[SSL 再ネゴシエーションを拒否する] までスクロールし、[NONSECURE] を選択して、RFC 5746 をサポートするクライアントのみに再ネゴシエーションを許可します -[HSTS] までスクロールします、[HSTS] にチェックマークを付け、[最大経過時間] に 157680000 秒を指定します。[プロトコル] までスクロールして、[TLSv12] と [TLSv13
] のみを選択します。 フォームの最後までスクロールして [OK] を選択します。SSL Ciphersをクリックし、編集する鉛筆アイコンを選択し、[すべて削除] をクリックします-[追加] をクリックして、前に作成した暗号グループを追加します
- フォームの最後までスクロールして [完了] を選択します
- [システム] > [プロファイル] > [SSL プロファイル] に移動し、[追加
- 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
- SSL プロファイルを有効にする
set ssl parameter -defaultProfile ENABLED
- SSL プロファイルを作成する
add ssl profile SSL_Labs_Profile_Q4_2021 -tls1 DISABLED -tls11 DISABLED -tls12 ENABLED -tls13 ENABLED -denySSLReneg NONSECURE -HSTS ENABLE
- 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
- SSL プロファイルを SSL 仮想サーバーにバインドする
set ssl vserver "Ex-vServer" -sslProfile SSL_Labs_Profile_Q4_2021
その他の設定
SHA1 証明書
SHA1 で署名された証明書は弱いとみなされ、SSL Labs テストで高品位になるのを防ぎます。SHA1で署名された証明書がある場合は、SHA256証明書に置き換えて、ADCにインストールする必要があります。
DNS CAA
DNS証明機関認証(CAA)を使用すると,CAがドメインの証明書を発行する権限があるかどうかを検証し、問題が発生した場合に連絡先を提供できます。
DNS CAA は SSL Labsの A+ には必要なく、オプションの手順です。DNS CAA の詳細については、こちらをご覧ください。
従来のクライアントサポート
このガイドで使用する ECDHE 暗号は、古い低速の DHE 暗号を置き換えます。アップグレードできないレガシークライアントがある場合は、DHE を有効にするしかないかもしれません。
GUI で DHE 暗号スイートを有効にする
- [トラフィック管理] > [SSL] に移動し、[Diffie-Hellman (DH) キーの作成] を選択します。
Diffie-Hellman のキーに「DH_Key_Name_Here.key」という名前を付けてください
パラメータサイズ (Bits) を入力します。512から2048の間でなければなりません
Diffie-Hellman ・ジェネレータを選択 (2 または 5)
[作成] を選択します。選択したキーサイズによっては、完了するまでにかなりの時間がかかる場合があります。
注:完了するまでこの画面を通り過ぎないでください
[システム] > [プロファイル] > [SSL プロファイル] に移動します
SSL_Labs_Profile_Q4_2021プロファイルを選択し、[編集] を選択します
鉛筆アイコンを選択します
「DH パラメータを有効にする」チェックボックスまでスクロールして選択します。
先ほど作成した DH キーを選択してください
下にスクロールして「OK」を選択します
DHE 暗号スイートを先ほど作成した暗号グループにバインドする
[トラフィック管理] > [SSL] > [暗号グループ] に移動します
TLS1.2-DHE-RSA-AES256-GCM-SHA384 暗号を選択してください
- 矢印をクリックして暗号グループに追加します
CLI で DHE 暗号スイートを有効にする
- DH キーを作成して SSL プロファイルにバインドする (CLI)
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
- DHE 暗号スイートを先ほど作成した暗号グループにバインドする
bind ssl cipher SSL_Labs_Cipher_Group_Q4_2021 -cipherName TLS1.2-DHE-RSA-AES256-GCM-SHA384
ファームウェアに関する注意事項
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ハードウェアを搭載したアプライアンス用の以前のビルドで利用可能でした
TLS1.3のサポートは12.1ビルド49.23で追加されました。vServer SSLパラメータで有効にするか、拡張SSLプロファイルに追加する必要があり、TLS1.3暗号(リストに記載されています)をバインドする必要があります。TLS1.3 はレガシー SSL プロファイルではサポートされていません
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ハードウェアアクセラレーションを追加しました