SSL フォワード プロキシの概要
セキュア ソケット レイヤー (SSL) は、インターネットに暗号化テクノロジを提供するアプリケーション レベルのプロトコルです。SSLは Transport Layer Security (TLS)とも呼ばれ、プライバシー、認証、機密性、およびデータ整合性の組み合わせを通じて、クライアントとサーバー間のデータの安全な送信を保証します。SSL は、このレベルのセキュリティで証明書と秘密キーと公開キーの交換ペアに依存します。
サーバー認証は、Web ブラウザーで Web サーバーの ID を検証できるようにすることで、不正な送信から保護します。機密性メカニズムにより、通信はプライベートになります。SSLは、データを暗号化して機密性を強制し、権限のないユーザーが電子通信を盗聴するのを防ぎます。最後に、メッセージの整合性により、通信の内容が改ざんされていないことが保証されます。
SSL フォワードプロキシは透過プロキシです。つまり、クライアントとサーバーの間でSSL暗号化と復号化を実行しますが、サーバーもクライアントもその存在を検出できません。SSL フォワード プロキシは、ペイロードを暗号化および復号化するためのキーを確実に保持します。
サーバーの場合、SSL フォワードプロキシはクライアントとして機能します—SSL フォワードプロキシは共有の事前プライマリキーを生成するため、暗号化および復号化するキーを決定します。
クライアントの場合、SSL フォワードプロキシーはサーバーとして機能し、SSL フォワードプロキシーは最初に元のサーバーを認証し、元のサーバー証明書の公開鍵を既知の鍵に置き換えます。次に、証明書の元の発行者を独自の ID に置き換えることによって新しい証明書を生成し、この新しい証明書を独自の公開キー (プロキシ プロファイル構成の一部として提供される) で署名します。クライアントは、このような証明書を受け入れると、証明書の公開キーで暗号化された共有の事前プライマリ キーを送信します。SSL フォワードプロキシは元のキーを独自のキーに置き換えたため、共有の事前主キーを受信できます。復号化と暗号化は各方向(クライアントとサーバー)で行われ、キーは暗号化と復号化の両方で異なります。
図1 は、(既存のSRXシリーズIPSモジュール上の)SSLインスペクションを使用してサーバーを保護する方法を示しています。SSLインスペクションでは、SRXシリーズデバイスが暗号化されたトラフィックを復号化できるように、サーバーが使用する秘密鍵にアクセスする必要があります。
図 2 は、SSL フォワードプロキシが暗号化されたペイロードでどのように機能するかを示しています。アプリケーションファイアウォール(AppFW)、侵入防御システム(IPS)、またはアプリケーショントラッキング(AppTrack)が設定されている場合、SSL フォワードプロキシーはクライアントからの SSL セッションを終了する SSL サーバーとして機能し、サーバーへの新しい SSL セッションが確立されます。デバイスは、すべての SSL 転送プロキシ トラフィックを復号化し、再暗号化します。SSL フォワード プロキシは、次のサービスを使用します。
クライアント側の SSL-T-SSL ターミネータ。
サーバー側の SSL-I-SSL イニシエーター。
設定されたAppFW、IPS、またはAppTrackサービスは、復号化されたSSLセッションを使用します。
どのサービス(AppFW、IPS、または AppTrack)も設定されていない場合、SSL プロキシ プロファイルがファイアウォール ポリシーにアタッチされていても、SSL フォワード プロキシ サービスはバイパスされます。SSL フォワード プロキシーがセッションに対して有効になっている場合、IPS はセッションで SSL インスペクションを実行しません。つまり、SSL インスペクションと SSL フォワードプロキシの両方がセッションで有効になっている場合、SSL フォワードプロキシが常に優先されます。
プロキシ モードでサポートされている暗号方式
SSL 暗号は、暗号化暗号、認証方法、および圧縮で構成されます。 表 1 に、サポートされている暗号のリストを示します。NULL 暗号は除外されます。
以下の SSL プロトコルがサポートされています。
SSLv3
TLS1
SSL 暗号 |
鍵交換アルゴリズム |
データ暗号化 |
メッセージの整合性 |
---|---|---|---|
RSA_WITH_RC4_128_MD5 |
RSA 鍵交換 |
128 ビット RC4 |
メッセージ ダイジェスト 5(MD5)ハッシュ |
RSA_WITH_RC4_128_SHA |
RSA 鍵交換 |
128 ビット RC4 |
セキュア ハッシュ アルゴリズム(SHA)ハッシュ |
RSA_WITH_DES_CBC_SHA |
RSA 鍵交換 |
DES CBC |
SHA ハッシュ |
RSA_WITH_3DES_EDE_CBC_SHA |
RSA 鍵交換 |
3DES EDE/CBC |
SHA ハッシュ |
RSA_WITH_AES_128_CBC_SHA |
RSA 鍵交換 |
128 ビット AES/CBC |
SHA ハッシュ |
RSA_WITH_AES_256_CBC_SHA |
RSA 鍵交換 |
256ビットAES/CBC |
SHA ハッシュ |
RSA_EXPORT_WITH_RC4_40_MD5 |
RSAエクスポート |
40 ビット RC4 |
MD5 ハッシュ |
RSA_EXPORT_WITH_DES40_CBC_SHA |
RSAエクスポート |
40 ビット DES/CBC |
SHA ハッシュ |
RSA_EXPORT1024_WITH_DES_CBC_SHA |
RSA 1024 ビット エクスポート |
DES/CBC |
SHA ハッシュ |
RSA_EXPORT1024_WITH_RC4_56_MD5 |
RSA 1024 ビット エクスポート |
56 ビット RC4 |
MD5 ハッシュ |
RSA_EXPORT1024_WITH_RC4_56_SHA |
RSA 1024 ビット エクスポート |
56 ビット RC4 |
SHA ハッシュ |
RSA-WITH-AES-256-GCM-SHA384 |
RSA 鍵交換 |
256 ビット AES/GCM |
SHA384 ハッシュ |
RSA-WITH-AES-256-CBC-SHA256 |
RSA 鍵交換 |
256ビットAES/CBC |
SHA256 ハッシュ |
RSA-WITH-AES-128-GCM-SHA256 |
RSA 鍵交換 |
128 ビット AES/GCM |
SHA256 ハッシュ |
RSA-WITH-AES-128-CBC-SHA256 |
RSA 鍵交換 |
128 ビット AES/CBC |
SHA256 ハッシュ |
サーバー認証
クライアントとデバイス間の暗黙的な信頼(クライアントがデバイスによって生成された証明書を受け入れるため)は、SSLプロキシの重要な側面です。サーバー認証が侵害されないことが非常に重要です。ただし、実際には、自己署名証明書と異常のある証明書が豊富にあります。異常には、期限切れの証明書、ドメイン名と一致しない共通名のインスタンスなどが含まれます。
サーバー認証は、SSL 転送プロキシー・プロファイルで「サーバー認証を無視」オプションを選択することによって管理されます。
[サーバー認証を無視する] オプションが選択されていない場合、次のシナリオが発生します。
認証が成功した場合は、キーを置き換え、発行者名をプロキシ プロファイルのルート CA 証明書で構成されている発行者名に変更することで、新しい証明書が生成されます。
認証に失敗すると、接続は切断されます。
「サーバー認証を無視する」オプションが SSL 転送プロキシー・プロファイルのアクションとして定義されている場合、以下のシナリオが発生します。
証明書が自己署名の場合は、キーのみを置き換えることによって新しい証明書が生成されます。発行者名は変更されません。これにより、証明書が無効であるという警告がクライアント ブラウザーに表示されます。
証明書の有効期限が切れている場合、または共通名がドメイン名と一致しない場合は、キーを置き換え、発行者名を SSL-PROXY に変更することで、新しい証明書が生成されます。 DUMMY_CERT:SRVR 認証エラーのために生成されます。これにより、証明書が無効であるという警告がクライアント ブラウザーに表示されます。
信頼済み CA リスト
SSL フォワードプロキシーは、クライアントとサーバー間のデータの安全な伝送を保証します。セキュア接続を確立する前に、SSL フォワード・プロキシーは 認証局 (CA) 証明書を調べて、サーバー証明書の署名を検証します。このため、サーバーを効果的に認証するには、信頼できる CA 証明書の妥当なリストが必要です。
サーバー認証を無視する
[サーバー認証を無視する] オプションを使用して、サーバー認証を完全に無視できます。この場合、SSL フォワード プロキシは、サーバー証明書の検証プロセス中に発生したエラー (CA 署名の検証の失敗、自己署名証明書、証明書の有効期限など) を無視します。
このオプションを設定すると、Web サイトがまったく認証されないため、認証にはお勧めしません。ただし、このオプションを使用すると、SSL セッションがドロップされる根本原因を効果的に特定できます。
ルート CA
公開キー基盤 (PKI) 階層では、ルート CA は信頼パスの最上位にあります。ルート CA は、サーバー証明書を信頼できる証明書として識別します。
セッションの再開
SSL セッションとは、完全なハンドシェークを実行することによって作成されたパラメーターと暗号化キーのセットを指します。接続は、セッション内で発生する会話またはアクティブなデータ転送です。完全な SSL ハンドシェークと主鍵の生成の計算オーバーヘッドはかなりのものです。短時間のセッションでは、SSL ハンドシェークにかかる時間がデータ転送の時間より長くなることがあります。スループットを向上させながら適切なレベルのセキュリティーを維持するために、SSL セッション再開はセッション・キャッシング・メカニズムを提供し、事前 1 次秘密鍵や合意された暗号などのセッション情報をクライアントとサーバーの両方でキャッシュできます。キャッシュされた情報は、セッション ID によって識別されます。その後の接続では、両方の当事者は、新しい事前プライマリ秘密鍵を作成するのではなく、セッションIDを使用して情報を取得することに同意するものとします。セッション再開により、 ハンドシェイク プロセスが短縮され、SSL トランザクションが高速化されます。
SSL プロキシ ログ
SSL プロキシー・プロファイルでロギングが使用可能になっている場合、SSL プロキシーは 表 2 に示すメッセージを生成できます。
ログの種類 |
形容 |
---|---|
SSL_PROXY_SSL_SESSION_DROP |
SSL プロキシによってセッションがドロップされたときに生成されるログ。 |
SSL_PROXY_SSL_SESSION_ALLOW |
軽微なエラーが発生した後でも、SSLプロキシによってセッションが処理されたときに生成されるログ。 |
SSL_PROXY_SESSION_IGNORE |
非 SSL セッションが最初に SSL セッションと間違えられた場合に生成されるログ。 |
SSL_PROXY_SESSION_ALLOWLIST |
セッションが許可リストに登録されたときに生成されるログ。 |
SSL_PROXY_ERROR |
エラーの報告に使用されるログ。 |
SSL_PROXY_WARNING |
警告の報告に使用されるログ。 |
SSL_PROXY_INFO |
一般情報のレポートに使用されるログ。 |
すべてのログには同様の情報が含まれています。メッセージ フィールドには、ログ生成の理由が含まれています。 表 3 に示されている 3 つの接頭部のうちの 1 つは、メッセージのソースを識別します。その他のフィールドには、説明的なラベルが付けられています。
接頭辞 |
形容 |
---|---|
制 |
デバイスに関連するエラー、または SSL プロキシ プロファイルの一部として実行されたアクションによって生成されたログ。ほとんどのログはこのカテゴリに分類されます。 |
OpenSSL エラー |
opensslライブラリによってエラーが検出された場合にハンドシェイクプロセス中に生成されるログ。 |
証明書エラー |
証明書でエラーが検出された場合に ハンドシェイク プロセス中に生成されるログ(x509 関連のエラー)。 |
完全転送機密保持
完全転送機密保持は、サーバーの秘密キーが侵害された場合でもセッション キーが侵害されないことを保証する特定のキー合意プロトコルです。ユーザーが開始するセッションごとに一意のセッション キーを生成することにより、1 つのセッション キーが侵害されたとしても、その特定のキーで保護されている特定のセッションで交換されたデータ以外のデータには影響しません。
楕円曲線 DHE(ECDHE)暗号スーツをサポートしており、SSL フォワードプロキシで完全な前方秘匿性を可能にします。SSL フォワード プロキシは、引き続き認証に RSA を使用します。ただし、EC Diffie-Hellman エフェメラル鍵交換を使用して、共有秘密鍵に合意します。
ECDHE 暗号スイートは DHE 暗号スイートよりも高速であるため、SSL フォワード・プロキシーは ECDHE 暗号スイートのみをサポートします。ECDHE暗号スーツは楕円曲線暗号に基づいており、より小さな鍵でRSAと同じレベルのセキュリティを実現できます。たとえば、224 ビットの楕円曲線は、2048 ビットの RSA キーと同じくらい安全です。
表 4 に、サポートされている ECDHE 暗号スーツを示します。
SSL 暗号 |
鍵交換アルゴリズム |
データ暗号化 |
メッセージの整合性 |
---|---|---|---|
ECDHE-RSA-WITH-AES-256-GCM-SHA384 |
ECDHE RSA |
256 ビット AES/GCM |
SHA 384 ハッシュ |
ECDHE-RSA-WITH-AES-256-CBC-SHA384 |
ECDHE RSA |
256ビットAES/CBC |
SHA 384 ハッシュ |
ECDHE-RSA-WITH-AES-256-CBC-SHA |
ECDHE RSA |
256ビットAES/CBC |
SHA ハッシュ |
ECDHE-RSA-WITH-AES-3DES-EDE-CBC-SHA |
ECDHE RSA |
3DES AES/EDE/CBC |
SHA ハッシュ |
ECDHE-RSA-WITH-AES-128-GCM-SHA256 |
ECDHE RSA |
128 ビット AES/GCM |
SHA 256 ハッシュ |
ECDHE-RSA-WITH-AES-128-CBC-SHA256 |
ECDHE RSA |
128 ビット AES/CBC |
SHA 256 ハッシュ |
ECDHE-RSA-WITH-AES-128-CBC-SHA |
ECDHE RSA |
128 ビット AES/CBC |
SHA ハッシュ |