內容驗證
「內容驗證」功能或「應用程式簽署」可防止使用您的官方二進位檔載入未簽署的檔案。給定金鑰對後,「verified_contents.json」就是應用程式檔案的簽章。它是使用工具「sign.py」和私密金鑰(private_key.pem 檔案)建立的。公鑰會內建到 NW.js 二進位檔中。若要執行已簽署的應用程式,請在應用程式目錄中使用 nw --verify-content=enforce_strict .
。它會顯示一個簡單的頁面。在下一步中,嘗試稍微修改 index.html,然後再次執行。NW 會報告檔案已損毀,並立即結束。
注意
此功能無法防止他人駭入您的應用程式並載入其他 NW 二進位檔。考慮使用 C++ 編寫部分功能,並載入 Node.js 模組、NaCl 或 使用 nwjc 將您的 JS 編譯成二進位檔
簽署應用程式
若要使用示範金鑰對簽署應用程式,請執行下列動作
- 變更至應用程式目錄
- 確定沒有
verified_contents.json
或computed_hashes.json
(您可以直接移除它們) - 執行
payload.exe
;它會產生payload.json
,作為sign.py
的輸入 - 執行
python sign.py > /tmp/verified_contents.json
(請務必將 tmp 目的地目錄設定為非應用程式目錄) - 將產生的
verified_contents.json
檔案移至應用程式目錄,即完成。
重新建置以使用您自己的金鑰對
若要使用您自己的金鑰對,您需要重新建置 NW 二進位檔。並且,預設情況下,命令列中 --verify-content=
的引數需要設定為 enforce_strict
。
- 產生您的金鑰對:
openssl genrsa -out private_key.pem 2048
(輸出檔案同時包含私鑰和公鑰) - 執行 python convertkey.py;它會將公鑰轉換成 C 原始碼。
- 將產生的原始碼放入
content/nw/src/nw_content_verifier_delegate.cc
;取代預設金鑰。 - 變更命令列引數的預設值:將該檔案中第 73 行變更為
Mode experiment_value = ContentVerifierDelegate::ENFORCE_STRICT;
- 建置 NW 二進位檔。
工具、範例應用程式和示範私鑰位於 tools/sign
目錄中。示範私鑰與建置在官方 NW 二進位檔中的公鑰配對。