使用 AppScan Proxy Server 在 AppScan® Enterprise 中測試自動化
AppScan Proxy Server 可讓您記錄資料流量,以在您的 AppScan Enterprise (ASE) 工作中當作「探索」資料使用。AppScan Proxy Server 是用於管理記錄 Proxy 的系統。您可以依需求建立 Proxy 實例,以記錄稍後將用於 DAST 掃描的資料流量。此文件說明如何設定及使用 Proxy 伺服器。
概觀
- 使用 AppScan Proxy Server,您可以自動啟動記錄 Proxy。接著會記錄從自動化架構送往 Web 應用程式的要求,因為它們是透過此記錄 Proxy 所傳送。資料流量會以 HAR 格式儲存在 .dast.config 檔案中,而您稍後可以上傳該檔案,以供 AppScan Enterprise (ASE) 用作掃描的「探索」資料。
- 您也可以手動透過 Proxy 伺服器記錄資料流量,以建立 .dast.config 檔案。
- 您也可以直接將自己的 HAR 檔案上傳至 ASE,而不需要使用 Proxy 伺服器。
此圖表描繪 automated scan flow with AppScan® Enterprise。
一般工作流程
安裝 AppScan Proxy 伺服器
- 下載其中一個現行 Node.js 版本,並將它安裝在您的機器上。如果您的服務符合 FIPS 標準,則您必須使用符合 FIPS 標準的 Node.js 伺服器。
- 將 DastProxyServerStandalone.zip 解壓縮到機器上的資料夾。
- 若要改寫 Proxy 伺服器要在其上執行的預設埠,請執行下列動作:在 Settings.json 中配置埠設定。
配置 AppScan Proxy 伺服器
符合 FIPS 標準模式
- 在 Proxy 伺服器的根資料夾中找到 Settings.json 檔案,然後在文字編輯器中開啟它。
- 找到 requireFips 設定,並將其值從 false 變更為 true。
- 儲存檔案。
Proxy 伺服器連線
- 若要設定 Proxy 伺服器要在其上執行的預設埠,請執行下列動作:在 Settings.json 中配置埠設定。
- 若為 Proxy 伺服器的安全 (SSL) 連線:在 Settings.json 中配置您自己的 PEM 或 PKCS12 憑證。
- PEM 憑證需要兩個檔案(完整路徑),而 PKCS12 憑證需要一個檔案(完整路徑)和密碼。
- 請不要忘記視需要在檔案路徑和密碼中跳出字元,例如 abc!”123 這類密碼會變成 abc!\”123(已跳出 ")。
使用 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
主要憑證
如果您要測試的應用程式使用 SSL (HTTPS),則 AppScan 記錄 Proxy 必須作為記錄資料流量的中間人。若要這麼做,它必須具有主要憑證,可用來簽署它與應用程式的通訊。
- 在您的機器上安裝 AppScan Proxy 伺服器所產生的憑證:
- 使用 REST API 下載 AppScan Proxy Server 所用的自簽「主要憑證管理中心」為 PEM 檔案。
- 在用於「探索」的瀏覽器上或是任何需要的地方(視資料流量來源而定)安裝憑證。
- 將您自己的主要憑證匯入至 AppScan Proxy 伺服器。支援的憑證格式有 PKCS12(.P12、.PFX)、JKS:
- 開啟指令行視窗,並且導覽至 Proxy 伺服器機器上的安裝資料夾。
- 執行下列指令:
.\Java\jre\bin\java -jar DastProxy.jar -irc [path to certificate file] -ircp [password]
註: 若要查看完整的指令用法,請執行 .\Java\jre\bin\java -jar DastProxy.jar 指令。重要:因為憑證將會儲存在 Proxy 伺服器上,所以建議您使用專用的測試憑證。
- 在 StartProxy 指令中提供您自己的固定伺服器憑證(不是主要憑證)。
設定 Proxy 閒置逾時
如果記錄 Proxy 實例在使用後未以關閉指令關閉,則會維持開啟並且在埠上接聽。如果記錄 Proxy 實例閒置超出預先定義的時間,則會自動關閉。
記錄 Proxy 實例的預設閒置逾時為 60 分鐘。您可以在 Settings.json 檔案(儲存於安裝資料夾)中變更 inactivityTimeoutInMinutes 的值。
加密資料流量
依預設,資料流量 (.dast.config) 檔案未加密。若要配置伺服器加密所有資料流量,請將 Settings.json 檔案(可以在安裝資料夾中找到)中的 "encryptDastConfig" 值變更為 “true”。
鏈結 Proxy
如果您需要定義多個已鏈結 Proxy,或是定義 Proxy 的例外,請使用安裝資料夾中的已鏈結 Proxy 規則檔案 (proxy.chain)。檔案包括使用的指示。
啟動 Proxy 伺服器
您可以直接啟動 Proxy 伺服器,或是將它當成服務來執行(如下)。請注意,您不能同時執行這兩項作業。
- 執行此指令: node app.js [port]
其中 *port = Proxy 伺服器用來接聽 REST API 要求的埠。
- 如果您在啟動 Proxy 伺服器時未定義埠,則會使用 Settings.json 檔案中設定的埠,如果該處未定義任何埠,則會使用埠 8383。
- 不需要停止 Proxy 伺服器,您可以讓它永久地執行。
啟動為服務
若要啟動服務,請執行下列指令:
node service.js --install
node service.js --start
其他服務指令
您可以執行 node service.js --help 指令來列印這份清單
服務指令 | 說明 |
---|---|
--start | 啟動服務 |
--stop | 停止服務 |
--install | 安裝服務 |
--uninstall | 停止並解除安裝服務 |
--h | --help | 輸出用法資訊 |
使用 Proxy Server
一旦 Proxy 伺服器啟動,您就可以啟動新的記錄 Proxy 實例,以記錄您應用程式的資料流量。
- 如果要啟動 Proxy 實例,請使用 REST API 要求:StartProxy
- 透過定義的記錄 Proxy 埠,將資料流量傳送至您要測試的應用程式。
- 完成時,請傳送 REST API 要求:StopProxy。
- 傳送 REST API 要求,以下載包含所記錄資料流量的 .dast.config 檔案:資料流量。檔案是 ZIP 檔案,其中包含一或多個 .har(HTTP 保存)檔案。當您下載此檔案時,會從 AppScan Proxy 伺服器刪除該資料。
- 您可以利用 ASE REST API,使用 .dast.config 檔案來更新現有工作的「探索」資料。請參閱以下文件:https://%3Case_server%3E:9443/ase/api/pages/apidocs.html。如需詳細資料,請參閱 Proxy 伺服器 API 指令一節。
Proxy 伺服器 API 指令
一旦 Proxy 伺服器啟動,您就可以啟動記錄 Proxy 實例,並且將您的資料流量傳送至您的應用程式。
文件
若要在 Swagger 中檢視完整的 REST API 文件,請在瀏覽器中鍵入:http(s)://<server>:<port>
所有指令都會指向與下列類似的端點:
http(s)://[server]:[port]/automation/
server = 在其上安裝 Proxy 伺服器之機器的 IP 位址(預設值為 localhost)
埠 = Proxy 伺服器在其上接聽的埠
"StartProxy"
- URL:http://[server]:[port]/automation/StartProxy/<recordingPort>
- 要求類型:POST 或 GET(如果使用 chainedProxy、proxyCertificate 和 clientCertificate,則要求是 POST;否則就是 GET)
"StopProxy"
- URL:http://[server]:[port]/automation/StopProxy/<recordingPort>
- 要求類型:GET
"StopAllProxies"
停止所有執行中的記錄 Proxy。這個指令會停止所有埠上的所有記錄 Proxy,包含其他使用者所啟動的記錄 Proxy。
- URL:http://[server]:[port]/automation/StopAllProxies
- 要求類型:POST
"EncryptDastConfig"
- URL:http://[server]:[port]/automation/EncryptDastConfig
- 要求類型:POST
"DownloadEncryptedDast"
- URL:http://[server]:[port]/automation/DownloadEncryptedDastConfig/<uuid>
- 要求類型:GET
"Traffic"
- URL:http://[server]:[port]/automation/Traffic/<recordingPort>
- 要求類型:GET
"Certificate"
- URL:http://[server]:[port]/automation/Certificate
- 要求類型:GET
更新 AppScan Proxy 伺服器
在捨棄 AppScan Proxy 伺服器並移至新版本之前,請務必將您已修改的任何配置檔都複製至新的資料夾。
如果您已將 Proxy 伺服器安裝為服務,則必須在更新之前解除安裝該服務(請參閱其他服務指令),之後再重新予以安裝。