プロキシー・サーバーの構成と使用
AppScan プレゼンス・プロキシー・サーバーを使用してトラフィックを記録し、それを DAST.CONFIG ファイルとして保存し、インポートして ASoC スキャンを実行できます。以下のサブセクションの説明に従って、オプションでこのファイルを暗号化することができます。
プロキシー・サーバー接続の構成
このタスクについて
注: Settings.json は JSON ファイルであるため、" (二重引用符) や \ (円記号) などの特定の文字はエスケープする必要があります。そのため、
“
は \”
になり、\
は \\
になります。重要: このファイルの
internalConfiguration
設定は変更しないでください。手順
プロキシー・サーバーへのセキュアな (SSL) 接続の場合: 独自の PEM 証明書または PKCS12 証明書を構成します。
- PEM:
- PEM 証明書には 2 つのファイル (絶対パス) が必要です
- 必要に応じて、ファイル・パスとパスワードの両方で文字をエスケープすることを忘れないでください。例えば、abc!”123 というパスワードであれば abc!\”123 とします (" 記号はエスケープされます)。
- PKCS12:
- コマンド・ラインで、次のように実行します。
.\Java\jre\bin\java.exe -jar .\DastProxy.jar -sc "C:\Path\to\certificate.pfx"
- プロンプトが出されたら、証明書のパスワードを入力し、Enter キーを押します。
- コマンド・ラインで、次のように実行します。
openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem
openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out server.crt
openssl を使用して PEM 証明書を PKCS12 証明書に変換する例:openssl pkcs12 -export -out certificate.pfx -inkey key.pem -in server.crt
Java のキー生成ツールを使用して JKS 証明書を PKCS12 証明書に変換する例:keytool -importkeystore -srckeystore certificate.jks -srcstoretype JKS -destkeystore certificate.p12 -deststoretype PKCS12
プロキシー・サーバーの使用
プロキシー・サーバーを開始したら、新しい記録プロキシー・インスタンスを開始して、アプリケーションのトラフィックを記録できます。
手順
-
サイトが保護されている場合 (HTTPS)、以下のいずれかの操作を行い、SSL 警告を回避できます。
- REST API を使用して自己署名ルート認証局をダウンロードします。これは、AppScan プロキシー・サーバーで PEM ファイルとして使用します。
- 探査に使用するブラウザー、または必要な場所 (トラフィックの送信元に応じて決まります) に証明書をインストールします。
-
プロキシーを開始するには、REST API 要求の
StartProxy
を使用して、記録ポート (トラフィックの送信先にするポート) を定義します。注: プロキシー・サーバーがサイトに直接アクセスできない場合は、この REST API でアップストリーム (チェーニングされた) プロキシーを定義することも可能です。注: 複数の チェーニングされたプロキシー、またはプロキシーの例外を定義する必要がある場合、インストール・フォルダーにあるチェーニングされたプロキシーのルール・ファイル (proxy.chain
) を使用します。注: トラフィックが暗号化されていない場合 (下のサブセクションを参照)、以下を使用して、個々の記録用にトラフィック・ファイル (DAST.CONFIG) を暗号化できます。Query param Example: /StartProxy/<recordingPort>?encrypted=true
- 定義した記録ポート経由でトラフィックを送信します。
-
完了したら、以下の REST API 要求を送信します:
StopProxy
(StopProxy/0
は使用できません)。 -
記録されたトラフィック・ファイルをダウンロードするために、以下の REST API 要求を送信します:
トラフィック
トラフィック・ファイルの拡張子は.dast.config
です注: トラフィック・ファイルをダウンロードすると、そのトラフィック・データがプロキシー・サーバーから削除されます。ASoC REST API を使用し、DAST.CONFIG ファイルを使用して既存のジョブの探査データを更新することができます。以下のことができます。
DAST.CONFIG ファイルの暗号化
プロキシー・サーバー REST API を使用し、DAST.CONFIG ファイルをアップロードして暗号化してから、暗号化したファイルをダウンロードできます。
- ファイルをアップロードして暗号化するには、以下を使用します。
EncryptDastConfig
- 暗号化したファイルをダウンロードするには、以下を使用します。
DownloadEncryptedDastConfig
トラフィックの暗号化
デフォルトでは、トラフィック (DAST.CONFIG) ファイルは暗号化されません。すべてのトラフィックを暗号化するようにサーバーを構成するには、インストール・フォルダーにある
Settings.json
ファイルで "encryptDastConfig"
キーを true
に変更します。プロキシー非アクティブ・タイムアウトの設定
プロキシー・インスタンスを使用後に close コマンドで閉じない場合、ポート上で開いたままリッスンを続行します。記録プロキシー・インスタンスは、事前定義した時間だけアイドルになると、自動的に閉じられます。
記録プロキシー・インスタンスのデフォルトの非アクティブ・タイムアウトは、60 分です。インストール・フォルダーに保存されている Settings.json
ファイルでこの値を変更することができます。
チェーニングされたプロキシー
プロキシー・インスタンスを使用後に close コマンドで閉じない場合、ポート上で開いたままリッスンを続行します。記録プロキシー・インスタンスは、事前定義した時間だけアイドルになると、自動的に閉じられます。
記録プロキシー・インスタンスのデフォルトの非アクティブ・タイムアウトは、60 分です。インストール・フォルダーに保存されている Settings.json
ファイルでこの値を変更することができます。
ルート証明書を構成する
お使いのアプリケーションが SSL (HTTPS) を使用している場合、トラフィックを記録するためにプロキシーが中間者攻撃として動作する必要があります。このためには、プロキシー・サーバーに、アプリケーションとの通信の署名を行うために使用できるルート証明書が必要です。
デフォルトではプロキシー・サーバーは、ユーザーの介入なく固有のルート証明書を生成します。ただし、アプリケーションを参照中に SSL 警告が表示されます。以下のいずれかを実行できます。
- マシン上のプロキシーによって生成された証明書をインストールします。
- REST API を使用して自己署名ルート認証局をダウンロードします。これは、AppScan プロキシー・サーバーで PEM ファイルとして使用します。
- 探査に使用するブラウザー、または必要な場所 (トラフィックの送信元に応じて決まります) に証明書をインストールします。
- 独自のルート証明書をプロキシー・サーバーにインポートします。サポートされる証明書形式は、PKCS12 (.P12、.PFX)、JKS です。
- コマンド行ウィンドウを開き、AppScan プレゼンス・マシンにあるプロキシー・サーバーのインストール・フォルダーへ移動します。デフォルトの場所は、次のとおりです。
<AppScanPresenceInstallFolder>\Automation
- 以下のコマンドを実行します。
..\Java\jre\bin\java -jar DastProxy.jar -irc [path to certificate file] -ircp [password]
..\Java\jre\bin\java -jar DastProxy.jar
- コマンド行ウィンドウを開き、AppScan プレゼンス・マシンにあるプロキシー・サーバーのインストール・フォルダーへ移動します。デフォルトの場所は、次のとおりです。
重要: 証明書はプロキシー・サーバーに保存されるので、専用のテスト証明書を使用することをお勧めします。
注: このワークフローのデモ・スクリプト
ProxyServerDemoScript.py
は、次のデフォルトの場所にあります。<AppScanPresenceInstallFolder>\Automation