跳到內容
Try Gitea Cloud ☁️ for 30 days → Accelerate your Development & Deploys!
這是 1.23.8 的文檔,已不是最新發布版本。查看最新發布版本

GPG 提交簽名

當前中文文檔翻譯不是最新版,訪問英文版本查看最新內容,或幫助我們翻譯

Gitea 會通過檢查提交是否由 Gitea 資料庫中的密鑰簽名,或提交是否符合 Git 的預設密鑰來驗證 GPG 提交簽名。

密鑰不會被檢查是否已過期或被撤銷,也不會與密鑰伺服器進行檢查。

如果找不到密鑰來驗證提交,提交將被標記為灰色未鎖定圖標。如果提交被標記為紅色未鎖定圖標,則表示該提交是由具有 ID 的密鑰簽名的。

Gitea 會在以下幾個地方自動生成提交:

  • 儲存庫初始化
  • Wiki 更改
  • 使用編輯器或 API 進行的 CRUD 操作
  • 從拉取請求合併

根據設定和伺服器信任,您可能希望 Gitea 簽署這些提交。

伺服器管理員需要決定如何最好地安裝簽名密鑰。目前,Gitea 使用伺服器的 git 命令生成所有提交,因此將使用伺服器的 gpg 進行簽名(如果已設定)。管理員應該審查 GPG 的最佳實踐,特別是建議僅安裝簽名的祕密子密鑰,而不安裝主簽名和認證的祕密密鑰。

Gitea 的簽名設定可以在 app.ini[repository.signing] 部分找到:

...
[repository.signing]
SIGNING_KEY = default
SIGNING_NAME =
SIGNING_EMAIL =
INITIAL_COMMIT = always
CRUD_ACTIONS = pubkey, twofa, parentsigned
WIKI = never
MERGES = pubkey, twofa, basesigned, commitssigned
...

首先要討論的是 SIGNING_KEY。有三個主要選項:

  • none - 這會阻止 Gitea 簽署任何提交
  • default - Gitea 將預設使用 git config 中設定的密鑰
  • KEYID - Gitea 將使用 ID 為 KEYID 的 gpg 密鑰簽署提交。在這種情況下,您應該提供 SIGNING_NAMESIGNING_EMAIL 以顯示此密鑰。

default 選項將查詢 git configcommit.gpgsign 選項 - 如果設定了此選項,則將根據需要使用 user.signingkeyuser.nameuser.email 的結果。

通過調整 Gitea 儲存庫中的 Git config 文件,可以使用 SIGNING_KEY=default 為每個儲存庫提供不同的簽名密鑰。然而,這顯然不是理想的 UI,因此可能會有所變化。

此選項決定 Gitea 在建立儲存庫時是否應該簽署初始提交。可能的值是:

  • never: 從不簽署
  • pubkey: 僅在使用者擁有公鑰時簽署
  • twofa: 僅在使用者使用雙因素身份驗證登入時簽署
  • always: 始終簽署

除了 neveralways 之外的選項可以作為逗號分隔的列表進行組合。提交將在所有選定選項都為真時簽署。

此選項決定 Gitea 是否應該簽署 Wiki 的提交。可能的值是:

  • never: 從不簽署
  • pubkey: 僅在使用者擁有公鑰時簽署
  • twofa: 僅在使用者使用雙因素身份驗證登入時簽署
  • parentsigned: 僅在父提交已簽署時簽署。
  • always: 始終簽署

除了 neveralways 之外的選項可以作為逗號分隔的列表進行組合。提交將在所有選定選項都為真時簽署。

此選項決定 Gitea 是否應該簽署來自網頁編輯器或 API CRUD 操作的提交。可能的值是:

  • never: 從不簽署
  • pubkey: 僅在使用者擁有公鑰時簽署
  • twofa: 僅在使用者使用雙因素身份驗證登入時簽署
  • parentsigned: 僅在父提交已簽署時簽署。
  • always: 始終簽署

除了 neveralways 之外的選項可以作為逗號分隔的列表進行組合。更改將在所有選定選項都為真時簽署。

此選項決定 Gitea 是否應該簽署來自 PR 的合併提交。可能的選項是:

  • never: 從不簽署
  • pubkey: 僅在使用者擁有公鑰時簽署
  • twofa: 僅在使用者使用雙因素身份驗證登入時簽署
  • basesigned: 僅在基礎儲存庫中的父提交已簽署時簽署。
  • headsigned: 僅在頭分支中的頭提交已簽署時簽署。
  • commitssigned: 僅在頭分支中到合併點的所有提交都已簽署時簽署。
  • approved: 僅簽署已批准的合併到受保護分支。
  • always: 始終簽署

除了 neveralways 之外的選項可以作為逗號分隔的列表進行組合。合併將在所有選定選項都為真時簽署。

用於簽署 Gitea 提交的公鑰可以從 API 獲取:

Terminal window
/api/v1/signing-key.gpg

在有儲存庫特定密鑰的情況下,可以從以下位置獲取:

Terminal window
/api/v1/repos/:username/:reponame/signing-key.gpg