SSL証明書
SSLプロキシとして機能するSRXシリーズファイアウォールは、一方の端でクライアントともう一方の端でサーバー間のSSL接続を管理します。SSLプロキシサーバーは、暗号化技術を使用してデータの安全な送信を保証します。SSLは、証明書と秘密鍵と公開鍵の交換ペアに依存して、安全な通信を提供します。このトピックでは、SSL 接続用のセキュリティ デバイスに SSL 証明を生成してインストールする方法について説明します。
SSL 証明書の設定と読み込み
サーバー認証失敗を無視する
サーバー認証
クライアントとデバイス間の暗黙の信頼(クライアントがデバイスによって生成された証明書を受け入れるため)は、SSLプロキシの重要な側面です。サーバー認証が危険にさらされないことは非常に重要です。しかし、実際には、自己署名証明書や異常のある証明書が豊富にあります。異常には、期限切れの証明書、ドメイン名と一致しない共通名のインスタンスなどが含まれます。
サーバー認証は、SSL プロキシー・プロファイルで ignore-server-auth-failure オプションを設定することによって制御されます。このオプションを設定した結果を 表1に示します。
[edit]user@host#set services ssl proxy profile profile-name actions ignore-server-auth-failure
| SSL プロキシ プロファイル アクション |
業績 |
|---|---|
| ignore-server-auth-failureオプションは設定されていません(デフォルトオプション) |
|
| ignore-server-auth-failure オプションが設定されています |
|
クライアント認証
現在、クライアント認証はSSLプロキシではサポートされていません。サーバーがクライアント認証を要求すると、証明書が使用できないという警告が発行されます。この警告により、サーバーは続行するか終了するかを決定できます。
SSL プロキシの証明書失効リスト
オンライン証明書ステータス プロトコルと証明書失効リストについてを参照してください。
SSL プロキシの証明書失効リストの操作
認証局 (CA) は、証明書失効リスト (CRL) を使用して、失効した証明書のリストを定期的に発行します。セキュリティ デバイスは、最後に発行された CRL をダウンロードしてキャッシュします。CRL には、有効期限が切れる前に取り消されたシリアル番号を持つデジタル証明書のリストが含まれています。
CA は、証明書が侵害される可能性がある場合、発行された証明書を失効させます。証明書を取り消すその他の理由には、次のようなものがあります。
-
指定なし(特に理由は示されていません)。
-
証明書を発行した証明書または CA に関連付けられている秘密キーが侵害されました。
-
証明書の所有者は、証明書の発行者とは関係がなくなりました
-
別の証明書が元の証明書に置き換わります。
-
証明書を発行した CA は動作を停止しました。
-
証明書は、さらなるアクションを保留しています。取り消されたものとして扱われますが、将来受け入れられる可能性があります。
参加デバイスは、デジタル証明書を使用する場合、証明書の署名と有効性をチェックします。デフォルトでは、CRL 検証は SSL プロキシ プロファイルで有効になっています。
Junos OS リリース 15.1X49-D30 および Junos OS リリース 17.3R1 以降、SRXシリーズファイアウォールは証明書失効リスト(CRL)をサポートしています。SRXシリーズファイアウォールでのCRL検証には、サーバーから失効した証明書の確認が含まれます。
SRXシリーズファイアウォールでは、SSLプロキシプロファイルの証明書失効チェックがデフォルトで有効になっています。CRL 検証は、特定のセキュリティ要件を満たすように有効または無効にすることができます。
CRL のダウンロードの失敗や、ルート証明書または中間証明書の CRL パスが利用できないなどの理由で CRL 情報が利用できない場合に、セッションを許可またはドロップできます。
-
CRL 情報が使用できない場合は、セッションを許可します。
[edit] user@host# set services ssl proxy profile profile-name actions crl if-not-present allow -
CRL 情報が利用できない場合は、セッションをドロップします。
[edit] user@host# set services ssl proxy profile profile-name actions crl if-not-present drop -
SRXシリーズファイアウォールを設定して、失効ステータスに関する信頼できる確認なしで証明書を受け入れ、証明書が失効して失効理由が保留になっている場合にセッションを許可します。
[edit] user@host# set services ssl proxy profile profile-name actions crl ignore-hold-instruction-code
SSL パフォーマンスの強化
SRXシリーズファイアウォールのSSLパフォーマンス強化には、以下の機能が含まれます。
SSL パフォーマンスの最適化
SSL/TLSハンドシェイクは、CPUを集中的に使用するプロセスです。SSL/TLSはWeb上で最も広く使用されているセキュリティプロトコルであるため、そのパフォーマンスはWebパフォーマンスに大きな影響を与えます。
Junos OS リリース 15.1X49-D120 以降では、パフォーマンスを最適化するために以下のオプションを使用できます。
-
最適化された RSA 鍵交換を使用する
-
関連データ(AEAD)による認証済み暗号化の使用—AES128-CBC-SHA、AES256-CBC-SHA
-
証明書キャッシュの維持 - 証明書キャッシュには、禁止されたサーバー証明書がサーバー証明書の詳細とともに保存されます。SSL/TLSハンドシェイク中に、SSLプロキシは、新しい禁止された証明書を生成する代わりに、キャッシュされた禁止された証明書をクライアントに提示できます。
SSLパフォーマンスを改善すると、セキュリティを損なうことなくWebサイトのパフォーマンスが向上し、ユーザーエクスペリエンスが最大限に向上します。
必要に応じて、証明書キャッシュに対して次の設定を構成できます。ただし、デフォルト値を保持することをお勧めします。
例:
-
(オプション)証明書キャッシュのタイムアウト値を設定します(例:300秒)。
[edit]user@host# set services ssl proxy global-config certificate-cache-timeout 300この例では、証明書キャッシュは証明書の詳細を 300 秒間保存します。デフォルトのタイムアウト値は 600 秒です。
-
(オプション)証明書キャッシュを無効にします。
[edit]user@host# set services ssl proxy global-config disable-cert-cache証明書キャッシュを無効にすると、デバイスは新しい接続の SSL フル ハンドシェイクを許可します。デフォルトでは、証明書キャッシュは有効になっています。
-
(オプション)既存の証明書キャッシュを無効にします。
[edit]user@host# set services ssl proxy global-config invalidate-cache-on-crl-updateこの例では、証明書失効リスト(CRL)が更新されると、デバイスは既存の証明書キャッシュを無効にします。既定では、[CRL 更新時に証明書キャッシュを無効にする] は無効になっています。
セッションの再開
SSL セッション再開は、既にネゴシエートされたセッション ID を使用して前のセッションを再開するメカニズムを提供します。セッションの再開により、クライアントとサーバーは、完全な SSL ハンドシェイクと新しい主キーの生成の計算オーバーヘッドを節約します。
セッションの再開により、ハンドシェイク プロセスが短縮され、SSL トランザクションが高速化されるため、適切なレベルのセキュリティを維持しながらパフォーマンスが向上します。
TLS 1.2は、セッション識別子とセッションチケットメカニズムを使用してセッション再開をサポートします。SSL セッションの再開には、以下のステップが含まれます。
-
セッションキャッシュメカニズムは、クライアントとサーバーの両方について、プリマスター秘密鍵や合意された暗号方式などのセッション情報をキャッシュします。
-
セッション ID は、キャッシュされた情報を識別します。
-
その後の接続では、両者は、プリマスター秘密鍵を作成するのではなく、セッション ID を使用して情報を取得することに同意します。
Junos OS リリース 22.1R1 以降、TLS 1.3 は SSL プロキシの事前共有キー(PSK)を使用したセッション再開をサポートしています。PSKを使用したセッションの再開では、以前に確立された共有秘密鍵を使用してセッションを再開できるため、SSLハンドシェイクのオーバーヘッドを削減できます。
PSKは、最初のTLSハンドシェイクから導出された一意の暗号化キーです。TLS ハンドシェイクが成功すると、サーバーは PSK ID をクライアントに送信します。クライアントは、今後のハンドシェイクでその PSK ID を使用して、関連付けられた PSK の使用をネゴシエートし、セッションを再開します。
TLS1.3 を使用した SSL セッションの再開には、以下のステップが含まれます。
-
最初のTLSハンドシェイクの後、サーバーはPSK ID(PSKの暗号化されたコピー)を含む新しいセッションチケットメッセージをクライアントに送信します。
- 次回、クライアントがセッションを再開しようとすると、同じセッションチケットをHelloメッセージでサーバーに送信します。
- サーバーはメッセージを復号化し、PSK を識別し、キャッシュからセッション情報を取得してセッションを再開します。
SSL-I(SSL 開始)は ECDHE 鍵交換モードを備えた PSK を使用し、SSL-T(SSL 終了)は ECDHE 交換モードで PSK および PSK を使用します。
SSL プロキシー・セッションは、セッション再開のための接続の両端で、TLS1.3 および TLS1.2 以前のバージョン間の相互運用性をサポートします。
デフォルトでは、セッションの再開はSSLプロキシーに対して有効になっています。要件に応じて、セッションの再開をクリアしたり、再度有効にしたりできます。
- セッションの再開をクリアするには:
[edit] user@host# set services ssl proxy profile ssl actions disable-session-resumption
- セッションの再開を再度有効にするには:
[edit] user@host# delete services ssl proxy profile ssl actions disable-session-resumption
次のコマンドを使用して、セッションタイムアウト値を設定します。
[edit]
user@host# set services ssl proxy global-config session-cache-timeout session-cache-timeout
セッションの再ネゴシエーション
SRXシリーズファイアウォールは、セッションの再ネゴシエーションをサポートしています。セッションが作成され、SSL トンネル トランスポートが確立された後、SSL パラメータの変更には再ネゴシエーションが必要になります。SSLプロキシは、セキュア(RFC 5746)と非セキュア(TLS v1.0、TLS v1.1、およびTLS v1.2)の両方の再ネゴシエーションをサポートします。セッション再開が有効な場合、セッションの再ネゴシエーションは以下の状況で役立ちます。
-
暗号鍵は、長時間の SSL セッションの後に更新する必要があります。
-
より安全な接続を実現するには、より強力な暗号を適用する必要があります。
証明書、暗号強度、または信頼できる CA リストを変更して SSL プロキシ プロファイルを変更した場合、変更されたポリシーをコミットすると、システムはキャッシュ エントリをフラッシュします。この場合、新しい SSL パラメーターを確立するには、完全なハンドシェイクが必要です。(SSL以外のセッションへの影響はありません。
SSL プロキシー・プロファイルが変更されていない場合、そのプロファイルに対応するキャッシュ・エントリーはフラッシュされず、セッションは続行されます。
SMTP セッションの StartTLS のネゴシエーション
StartTLSは、最初のプレーンTCP接続からより安全なTLS接続へのSMTPセッションを有効にします。StartTLSは、ピア間のネゴシエーションが成功した後、TLSレイヤーを介したサーバーとクライアント間のSMTPセッションを許可します。StartTLSは、既存の安全でないプレーンSMTP接続を安全なSSL/TLS接続にアップグレードします。
しきい値を設定して、クライアントから StartTLS が受信されない場合にセッションを無視するまでの待機時間を決定できます。
次のオプションを設定できます。
- byte-threshold:クライアントから StartTLS が受信されていない場合にセッションを無視する前に許可される暗号化されていないセッションの最小バイト数。範囲は 100 から 300。
- packet-threshold:クライアントから StartTLS が受信されていない場合にセッションを無視する前に、クライアントからサーバー方向に許可される暗号化されていないパケットの数。範囲 1 から 15。
例:
[edit] user@host# set services ssl proxy global-config mail-threshold byte-threshold 100
この例では、SSLプロキシは100バイトのプレーン(暗号化されていない)SMTPトラフィックを許可します。100 バイトに達すると、クライアントから StartTLS が受信されない場合は、セッションが無視されます。
[edit] user@host# set services ssl proxy global-config mail-threshold packet-threshold 2
この例では、SSLプロキシはプレーン(暗号化されていない)SMTPトラフィックの2つのパケットを許可します。パケットが 2 つに達した後、クライアントから StartTLS が受信されない場合は、セッションを無視します。
ドメイン名の動的解決
ドメイン名に関連付けられたIPアドレスは動的であり、いつでも変更できます。ドメインIPアドレスが変更されるたびに、SSLプロキシ設定に反映されます(ファイアウォールポリシー設定で実行されるのと同様)。
変更履歴
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。特定の機能がお使いのプラットフォームでサポートされているかどうかを確認するには、 Feature Explorer を使用します。
