使用 KeyStore 儲存密鑰

Tradefed 包含「金鑰儲存庫」的概念,可將密鑰儲存在金鑰儲存庫服務中,並在測試執行階段要求使用。

使用金鑰儲存區

如要使用 KeyStore,請先在全域設定中定義 KeyStore 的來源。

完成後,您就可以透過下列方式使用儲存的金鑰:USE_KEYSTORE@{key}

JSONFileKeyStore

Tradefed 核心的範例實作會使用 JSON 金鑰儲存區,JSONFileKeyStoreClient如要使用這個金鑰儲存區,請定義具有鍵/值對應的 JSON 金鑰檔案。

舉例來說,您可以將 /path/to/keystore.json 檔案定義為

{
  "test_account": "foo@gmail.com",
  "test_account_pwd": "helloworld",
  "wifi_lab_ssid": "Google_private_AP",
  "wifi_lab_pwd": "secret123",
}

然後在 TF 全域設定檔中新增下列程式碼:

<key_store class="com.android.tradefed.util.keystore.JSONFileKeyStoreFactory">
<option name="json-key-store-file" value="/path/to/keystore.json" />
</key_store>

執行相關測試時,您現在可以傳入值做為 USE_KEYSTORE@test_account,TF 接著會查詢金鑰儲存區,並將其值做為測試的一部分。

以主機為基礎的 KeyStore 檔案

如要定義以主機為準的鍵/值組合,您可以將 /path/to/keystore_ssid.json 檔案定義為

{
  "host_a.*\\.corp\\.com": {
    "wifi_lab_ssid": "ssid_a",
    "wifi_lab_pwd": "secret_a"
  },
  "host_b.*\\.corp\\.com": {
    "wifi_lab_ssid": "ssid_b",
    "wifi_lab_pwd": "secret_b"
  }
}

檔案中項目的鍵是主機名稱的規則運算式 (regex) 模式,值則是任何主機的鍵/值組合,主機名稱必須相符。

然後更新 TF 全域設定檔,加入以主機為準的 Keystore 檔案:

<key_store class="com.android.tradefed.util.keystore.JSONFileKeyStoreFactory">
<option name="json-key-store-file" value="/path/to/keystore.json" />
<option name="host-based-key-store-file" value="/path/to/keystore-ssid.json" />
</key_store>

主機型金鑰儲存區檔案中定義的金鑰值,會覆寫以 json-key-store-file 指定的金鑰儲存區檔案中定義的值。

如果 KeyStore 中有多個主機型 KeyStore 檔案,順序就非常重要。如果某個鍵的值是在多個檔案中定義,則最後一個檔案中的值會覆寫其他檔案中的值。