使用 AppScan Traffic Recorder 在 AppScan® Enterprise 中進行測試自動化
HCL AppScan Traffic Recorder 可讓您記錄資料流量,以作為 AppScan Enterprise (ASE) 工作中的探索資料使用。HCL AppScan Traffic Recorder 是用於管理資料流量記錄器實例的系統。您可以依需求建立資料流量記錄器實例,以記錄稍後將用於 DAST 掃描的資料流量。本主題說明如何設定和使用資料流量記錄器。
概觀
- 使用 HCL AppScan Traffic Recorder,您可以自動啟動資料流量記錄器實例。從自動化架構送往 Web 應用程式的要求會被記錄下來,因為是透過「資料流量記錄器」所傳送。資料流量會以 HAR 格式儲存在 .dast.config 檔案中,而您稍後可以上傳該檔案,以供 AppScan Enterprise (ASE) 用作掃描的「探索」資料。
- 您也可以手動透過「資料流量記錄器」記錄資料流量,以建立 .dast.config 檔案。
- 您也可以直接將自己的 HAR 檔案上傳至 ASE,而不需要使用「資料流量記錄器」。
此圖描繪了使用 AppScan Enterprise 的自動化掃描流程®。

一般工作流程
安裝 HCL AppScan Traffic Recorder
先決條件:您的機器上必須安裝目前版本的 Node.js(v16 或更新的 LTS 版本)。如果您的服務符合 FIPS 標準,則必須使用符合 FIPS 標準的 Node.js 伺服器。
如果您使用 OpenSSL FIPS 提供者,請更新 OpenSSL FIPS 配置:
- 找到 Traffic Recorder 隨附的 nodejs.cnf 檔案。
- 將 include 路徑更新為指向您在安裝 OpenSSL FIPS 提供者時所使用的 openssl fipsinstall 命令的輸出。
- 若要將 Traffic Recorder 作為處理程序執行,請使用 nodefips <filename>。這會在您執行 Node.js 時自動套用 nodejs.cnf 配置。
例如:nodefips app.js
若要安裝「資料流量記錄器」:
- 下載 Traffic Recorder 檔案。您可以從 https://<HOST_NAME>/ase/downloads/TrafficRecorder.zip 下載,或在本機存取 C:\Program Files (x86)\HCL\AppScan Enterprise\WebApp\downloads\TrafficRecorder.zip。
- 在 Windows 上,請將 TrafficRecorder.zip 解壓縮到您電腦上的資料夾。
在 Linux 上,請解壓縮 TrafficRecorder.Linux.zip。
- 若要覆寫「資料流量記錄器」要在其上執行的預設埠,請在 Settings.json 配置埠設定。
- 在 Linux 上,請確保 app.js 和內部 Java 檔案 (/java/bin/java) 具有可執行權限。
配置 HCL AppScan 資料流量記錄器
符合 FIPS 標準模式
- 在「資料流量記錄器」的根資料夾中找到 Settings.json 檔案,然後在文字編輯器中開啟。
- 找到 requireFips 設定,並將其值從 false 變更為 true。
- 儲存檔案。
資料流量記錄器連線
- 在 Settings.json 中配置「資料流量記錄器」執行時使用的預設連接埠。
- 設定資料流量記錄器的安全 (SSL) 連線。您可以使用自己的憑證(方法 A)或自簽憑證(方法 B)來執行此操作。
方法 A:在
Settings.json中配置您自己的 PEM 或 PKCS12 憑證。PEM:
PEM 憑證需要兩個檔案路徑(指向 private.key 和 certificate.pem)。- 將檔案路徑插入 Settings.json 的 PEM 區段Note:需要對 '\' 字元進行跳脫處理,例如:"C:\\Users\\admin\\private.key"
PKCS12:
您必須在檔案路徑和密碼中視需要跳脫字元,例如,密碼 abc!”123 應變為 abc!\”123(” 符號已跳脫)。- 在指令行中,執行:
.\Java\bin\java.exe -jar .\DastProxy.jar -sc "C:\Path\to\certificate.pfx" - 在收到提示時,輸入憑證的密碼並按下 Enter 鍵。
使用 openssl 來建立 PEM 憑證的範例:
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 的 keygen 工具將 JKS 憑證轉換為 PKCS12 憑證的範例:
keytool -importkeystore -srckeystore certificate.jks -srcstoretype JKS -destkeystore certificate.p12 -deststoretype PKCS12
方法 B:如果您沒有憑證,則必須建立並使用自簽憑證。請注意,此方法較不安全。
選項 A:使用 OpenSSL
OpenSSL 未包含在內,除了用於建立自簽憑證之外,也非必需。
- 使用 OpenSSL 命令建立金鑰和 pem 檔案:
openssl req -new -newkey rsa:2048 -nodes -keyout private.key -x509 -days 365 -out certificate.pem - 將檔案路徑插入 Settings.json 的 PEM 區段Note:需要對 '\' 字元進行跳脫處理,例如:"C:\\Users\\admin\\private.key"。
選項 B:使用 Java keytool
對於 NodeJS 17 及更高版本,由於 keytool 的限制,您必須使用
「--openssl-legacy-provider」node 旗標,請參閱https://nodejs.org/api/cli.html#--openssl-legacy-provider- 在指令行中,開啟「資料流量記錄器」根資料夾。
- 使用以下命令建立 PKCS12 憑證檔案:
.\Java\bin\keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore-new.p12 -storetype PKCS12 -validity 365 -keysize 2048 - 填寫憑證詳細資訊,並使用密碼加以保護,下一步驟將需要此密碼。
- 使用以下命令,在 HCL AppScan Traffic Recorder 中使用產生的憑證:
.\Java\bin\java.exe -jar .\DastProxy.jar -sc "keystore-new.p12"
- 將檔案路徑插入 Settings.json 的 PEM 區段
根憑證
如果您正在測試的應用程式使用 SSL (HTTPS),HCL AppScan Traffic Recorder 必須充當中間人來記錄流量。若要這麼做,它必須具有根憑證,可用來簽署它與應用程式的通訊。
- 將 HCL AppScan Traffic Recorder 產生的憑證安裝到您的機器上:
- 使用 REST API 下載「AppScan 資料流量記錄器」所用的自簽「根憑證授權單位」(PEM 檔案)。
- 在用於「探索」的瀏覽器上或是任何需要的地方(視資料流量來源而定)安裝憑證。
- 將您自己的根憑證匯入 HCL AppScan Traffic Recorder。支援的憑證格式有 PKCS12(.P12、.PFX)、JKS:
- 開啟指令行視窗,並且導覽至「資料流量記錄器」機器上的安裝資料夾。
- 執行下列指令:
.\Java\bin\java -jar DastProxy.jar -irc [憑證檔案路徑] -ircp [密碼]
Note:若要檢視完整的指令用法,請執行 .\Java\bin\java -jar DastProxy.jar 指令。重要:因為憑證將會儲存在「資料流量記錄器」上,所以建議您使用專用的測試憑證。
- 在 StartProxy 指令中提供您自己的固定伺服器憑證(不是根憑證)。
設定閒置逾時
如果資料流量記錄器實例在使用後未以關閉指令關閉,將會維持開啟並且在埠上接聽。如果資料流量記錄器實例閒置超出預先定義的時間,則會自動關閉。
資料流量記錄器實例的預設閒置逾時為 60 分鐘。您可以透過變更安裝資料夾中 Settings.json 檔案內的 inactivityTimeoutInMinutes 值來變更此值。
加密資料流量
依預設,資料流量 (.dast.config) 檔案未加密。若要配置伺服器加密所有資料流量,請將 Settings.json 檔案(可以在安裝資料夾中找到)中的 "encryptDastConfig" 值變更為 “true”。
鏈結 Proxy
如果您需要定義多個已鏈結 Proxy,或是定義 Proxy 的例外,請使用安裝資料夾中的已鏈結 Proxy 規則檔案 (proxy.chain)。檔案包括使用說明。
啟動/停止資料流量記錄器
您可以直接啟動「資料流量記錄器」,或是當成服務來執行(如下)。請注意,您不能同時執行這兩項作業。
- 執行此指令:node app.js [port]
其中 *port = 資料流量記錄器用來接聽 REST API 要求的埠。
- 如果您在啟動「資料流量記錄器」時未定義埠,則會使用 Settings.json 檔案中設定的埠,如果該處未定義任何埠,則會使用埠 8383。
- 不需要停止「資料流量記錄器」,您可以讓它永久地執行。
以 Windows 服務啟動
若要啟動服務,請執行下列指令:
node service.js --install
node service.js --start
其他服務指令
您可以執行指令 node service.js --help 來列印此清單
| 服務指令 | 說明 |
|---|---|
| --start | 啟動服務 |
| --stop | 停止服務 |
| --install | 安裝服務 |
| --uninstall | 停止並解除安裝服務 |
| --h | --help | 輸出用法資訊 |
停止 Windows 服務
若要使用服務資料夾中找到的 service.js 執行檔,來停止「資料流量記錄器 Windows 服務」,請執行以下指令:
node service.js --uninstall
使用 systemd 將其作為 Linux 服務啟動
- 在 systemd 目錄下建立新檔案(通常為:/etc/systemd/system)。例如,sudo vim /etc/systemd/system/TrafficRecorder.service。檔案內容:
[Unit]
Description=Appscan TrafficRecorder
After=multi-user.target[Service]
ExecStart=[path to node here] [path to app.js here]Restart=always
RestartSec=10StandardOutput=syslogStandardError=syslog
SyslogIdentifier=TrafficRecorder[Install]
WantedBy=multi-user.target
ExecStart 範例:ExecStart= node /home/admin/Documents/TrafficRecorder.Linux.1.2.0/app.js
- 使用下列指令重新載入 systemd 檔案:sudo systemctl daemon-reload
- 使用下列指令啟動服務:sudo systemctl start TrafficRecorder.service
- 您可以使用下列指令檢查狀態:sudo systemctl status TrafficRecorder.service
Note:狀態應顯示為「Active: active (running)」
- 使用下列指令啟用服務:sudo systemctl enable TrafficRecorder.service
停止 Linux 服務
- 使用下列指令停止服務:sudo systemctl stop TrafficRecorder.service
- 使用下列指令停用服務:sudo systemctl disable TrafficRecorder.service
使用資料流量記錄器
「資料流量記錄器」啟動之後,您就可以啟動新的資料流量記錄器實例,以記錄您應用程式的資料流量。
- 若要啟動資料流量記錄器實例,請使用 REST API 要求:StartProxy
- 透過已定義的資料流量記錄器埠,將資料流量傳送至您要測試的應用程式。
- 完成後,傳送 REST API 要求:StopProxy。
- 透過傳送 REST API 要求 Traffic 來下載包含已記錄流量的 .dast.config 檔案。檔案是 ZIP 檔案,其中包含一個或多個 .har(HTTP Archive)檔案。當您下載此檔案時,資料會從 HCL AppScan Traffic Recorder 中刪除。
- 您可以利用 ASE REST API,使用 .dast.config 檔案來更新現有工作的「探索」資料。請參閱文件連結:https://<domain>:9443/ase/api/pages/apidocs.html。如需相關資訊,請參閱資料流量記錄器 API 指令章節。
資料流量記錄器 API 指令
「資料流量記錄器」啟動之後,您就可以啟動資料流量記錄器實例,並將您的資料流量傳送至您的應用程式。
文件
若要在 Swagger 中檢視完整的 REST API 說明文件,請在瀏覽器中輸入:https://<server>:<port>
所有指令都會指向與下列類似的端點:
https://[server]:[port]/automation/
server = 在其上安裝「資料流量記錄器」之機器的 IP 位址(預設值為 localhost)
port = 資料流量記錄器接聽的埠
"StartProxy"
- URL:https://[server]:[port]/automation/StartProxy/<recordingPort>
- 請求類型:POST 或 GET(如果使用 chainedProxy、proxyCertificate 和 clientCertificate,則請求為 POST;否則為 GET)
"StopProxy"
- URL:https://[server]:[port]/automation/StopProxy/<recordingPort>
- 請求類型:GET
"StopAllProxies"
停止所有執行中的資料流量記錄器實例。這個指令會停止所有埠上的所有資料流量記錄器實例,包含其他使用者所啟動的實例。
- URL:https://[server]:[port]/automation/StopAllProxies
- 請求類型:POST
"EncryptDastConfig"
- URL:https://[server]:[port]/automation/EncryptDastConfig
- 請求類型:POST
"DownloadEncryptedDast"
- URL:https://[server]:[port]/automation/DownloadEncryptedDastConfig/<uuid>
- 請求類型:GET
"Traffic"
- URL:https://[server]:[port]/automation/Traffic/<recordingPort>
- 請求類型:GET
"Certificate"
- URL:https://[server]:[port]/automation/Certificate
- 請求類型:GET