# 服務憑證

```{attention}
本章節的服務憑證與 [安裝中間人憑證](./install-mitm-cert.md) 章節中所述的中間人抓包憑證用途不同，請注意區分，後者安裝於 Android 系統信任區，用於使應用信任代理以完成流量攔截。服務憑證為 PEM 格式檔案，由 FIRERPA 伺服端載入、用戶端持有，用於加密 FIRERPA 通訊鏈路並校驗存取者身分。
```

本章介紹 FIRERPA 服務憑證的產生與部署。FIRERPA 伺服端預設未啟用身分認證，同一網路內任何知曉裝置 IP 與埠號的存取者均可連接遠端桌面、呼叫 API 或使用 SSH。如您需要在不可信網路環境中使用或需對通訊進行 TLS 加密時，應透過服務憑證啟用存取控制。

```{note}
透過 APP 安裝伺服端時，可在 APP 的**配置**中啟用認證，APP 將自動產生並設定憑證，無需執行下文產生流程。採用 Magisk 模組或手動部署，需要按照本章步驟產生並手動進行部署。
```

產生憑證前，須在 PC 端完成 [工具準備](./tools-prepare.md)，複製 `lamda` 倉庫並在 `tools` 目錄安裝 Python 依賴。於 `tools` 目錄執行 `cert.py`，將參數替換為存取設備時使用的主機名稱。

```bash
python3 cert.py mydevice.local
```

執行成功後，當前目錄將產生 `mydevice.local.pem` 以及 `root.crt`、`root.key`。`.pem` 檔案供伺服端啟用 TLS 及用戶端完成身分校驗，`root.crt` 與 `root.key` 為根憑證金鑰對，通常不參與日常連線，但應妥善保管以供後續更換或故障排查。
<br>
<br>
產生的 PEM 檔案首行為元資料註釋，其中 `PASSWD` 欄位值為預設遠端桌面登入憑據。請勿手動編輯 PEM 檔案中的私鑰或憑證內容，否則可能導致伺服端啟動失敗或用戶端校驗異常。憑證檔案格式如下，每個塊依次為 `key`, `cert`, `CA` 且必須嚴格遵循該順序。

```text
LAMDA SSL CERTIFICATE (CN=mydevice.local,PASSWD=e908d358...)
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEA33YUKkfUkLeWtsCe7A1yzIZsqOTd1a8XWr9+Vh0ombOdtnqK...
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIC1DCCAbygAwIBAgIQBKjY0w1FbPJooD5mJ1CWwDANBgkqhkiG9w0BAQsFADAz...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDAzCCAeugAwIBAgIQR9OCJbQGGQT5Pgp7PmLrDTANBgkqhkiG9w0BAQsFADAz...
-----END CERTIFICATE-----
```

憑證產生後，還需要配置 FIRERPA 伺服端在啟動時載入該憑證，存取控制方可生效。Magisk 部署可將 PEM 重新命名為 `lamda.pem` 並按 [安裝伺服端](./install-server.md) Magisk 章節說明置入模組包。配置生效並重啟服務後，遠端桌面、API 及配套工具方按 HTTPS 與憑證要求運作。
<br>
<br>
手動安裝則可以透過在 `launch.sh` 後面加上命令列參數 `--certificate=/path/to/lamda.pem` 來傳遞憑證，也可以透過在[服務配置](./properties.md)中設定 `cert` 配置項來使用。

```{note}
啟用服務憑證後，[遠端桌面](./remote-desktop.md) 須使用 https:// 協定存取，並且需要在 WebUI 中輸入上述密碼，您也可以透過 [服務配置](./properties.md) 中的 ssl-web-credential 項設定備用登入密碼。Python 用戶端連線時在 Device 建構式中指定 PEM 路徑（參見 [API 準備](./api-prepare.md)）。tools 目錄下命令列工具透過 CERTIFICATE 環境變數指定路徑（參見 [工具準備](./tools-prepare.md)）。
```