Files
gitea-docs/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.23/administration/signing.md
appleboy dbfa0ba454 docs: add zh-tw folder (#195)
Signed-off-by: appleboy <appleboy.tw@gmail.com>
Reviewed-on: https://gitea.com/gitea/docs/pulls/195
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: appleboy <appleboy.tw@gmail.com>
Co-committed-by: appleboy <appleboy.tw@gmail.com>
2025-04-04 23:28:16 +00:00

139 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
date: "2019-08-17T10:20:00+01:00"
slug: "signing"
sidebar_position: 50
aliases:
- /zh-tw/signing
---
# GPG 提交簽名
Gitea 會通過檢查提交是否由 Gitea 資料庫中的密鑰簽名,或提交是否符合 Git 的預設密鑰來驗證 GPG 提交簽名。
密鑰不會被檢查是否已過期或被撤銷,也不會與密鑰伺服器進行檢查。
如果找不到密鑰來驗證提交,提交將被標記為灰色未鎖定圖標。如果提交被標記為紅色未鎖定圖標,則表示該提交是由具有 ID 的密鑰簽名的。
:::note
提交的簽名者不必是提交的作者或提交者。
:::
## 自動簽名
Gitea 會在以下幾個地方自動生成提交:
- 儲存庫初始化
- Wiki 更改
- 使用編輯器或 API 進行的 CRUD 操作
- 從拉取請求合併
根據配置和伺服器信任,您可能希望 Gitea 簽署這些提交。
## 為 Gitea 安裝和生成 GPG 密鑰
伺服器管理員需要決定如何最好地安裝簽名密鑰。目前Gitea 使用伺服器的 `git` 命令生成所有提交,因此將使用伺服器的 `gpg` 進行簽名(如果已配置)。管理員應該審查 GPG 的最佳實踐,特別是建議僅安裝簽名的秘密子密鑰,而不安裝主簽名和認證的秘密密鑰。
## 一般配置
Gitea 的簽名配置可以在 `app.ini``[repository.signing]` 部分找到:
```ini
...
[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`
首先要討論的是 `SIGNING_KEY`。有三個主要選項:
- `none` - 這會阻止 Gitea 簽署任何提交
- `default` - Gitea 將默認使用 `git config` 中配置的密鑰
- `KEYID` - Gitea 將使用 ID 為 `KEYID` 的 gpg 密鑰簽署提交。在這種情況下,您應該提供 `SIGNING_NAME``SIGNING_EMAIL` 以顯示此密鑰。
`default` 選項將查詢 `git config``commit.gpgsign` 選項 - 如果設置了此選項,則將根據需要使用 `user.signingkey``user.name``user.email` 的結果。
通過調整 Gitea 儲存庫中的 Git `config` 文件,可以使用 `SIGNING_KEY=default` 為每個儲存庫提供不同的簽名密鑰。然而,這顯然不是理想的 UI因此可能會有所變化。
:::warning
**自 1.17 起**Gitea 在其自己的主目錄 `[git].HOME_PATH`(默認為 `%(APP_DATA_PATH)/home`)中運行 git並使用其自己的配置 `{[git].HOME_PATH}/.gitconfig`
如果您為 Gitea 配置了自定義的 git 配置,應該在系統 git 配置(即 `/etc/gitconfig`)或 Gitea 內部 git 配置 `{[git].HOME_PATH}/.gitconfig` 中設置這些配置。
git 命令相關的主目錄文件(如 `.gnupg`)也應放在 Gitea 的 git 主目錄 `[git].HOME_PATH` 中。
如果您希望將 `.gnupg` 目錄保留在 `{[git].HOME_PATH}/` 之外,請考慮將 `$GNUPGHOME` 環境變量設置為您首選的位置,否則 Gitea 只會使用 `{[git].HOME_PATH}/.gnupg` 下的 gpg 密鑰。
:::
### `INITIAL_COMMIT`
此選項決定 Gitea 在創建儲存庫時是否應該簽署初始提交。可能的值是:
- `never`: 從不簽署
- `pubkey`: 僅在用戶擁有公鑰時簽署
- `twofa`: 僅在用戶使用雙因素身份驗證登錄時簽署
- `always`: 始終簽署
除了 `never``always` 之外的選項可以作為逗號分隔的列表進行組合。提交將在所有選定選項都為真時簽署。
### `WIKI`
此選項決定 Gitea 是否應該簽署 Wiki 的提交。可能的值是:
- `never`: 從不簽署
- `pubkey`: 僅在用戶擁有公鑰時簽署
- `twofa`: 僅在用戶使用雙因素身份驗證登錄時簽署
- `parentsigned`: 僅在父提交已簽署時簽署。
- `always`: 始終簽署
除了 `never``always` 之外的選項可以作為逗號分隔的列表進行組合。提交將在所有選定選項都為真時簽署。
### `CRUD_ACTIONS`
此選項決定 Gitea 是否應該簽署來自網頁編輯器或 API CRUD 操作的提交。可能的值是:
- `never`: 從不簽署
- `pubkey`: 僅在用戶擁有公鑰時簽署
- `twofa`: 僅在用戶使用雙因素身份驗證登錄時簽署
- `parentsigned`: 僅在父提交已簽署時簽署。
- `always`: 始終簽署
除了 `never``always` 之外的選項可以作為逗號分隔的列表進行組合。更改將在所有選定選項都為真時簽署。
### `MERGES`
此選項決定 Gitea 是否應該簽署來自 PR 的合併提交。可能的選項是:
- `never`: 從不簽署
- `pubkey`: 僅在用戶擁有公鑰時簽署
- `twofa`: 僅在用戶使用雙因素身份驗證登錄時簽署
- `basesigned`: 僅在基礎儲存庫中的父提交已簽署時簽署。
- `headsigned`: 僅在頭分支中的頭提交已簽署時簽署。
- `commitssigned`: 僅在頭分支中到合併點的所有提交都已簽署時簽署。
- `approved`: 僅簽署已批准的合併到受保護分支。
- `always`: 始終簽署
除了 `never``always` 之外的選項可以作為逗號分隔的列表進行組合。合併將在所有選定選項都為真時簽署。
## 獲取簽名密鑰的公鑰
用於簽署 Gitea 提交的公鑰可以從 API 獲取:
```sh
/api/v1/signing-key.gpg
```
在有儲存庫特定密鑰的情況下,可以從以下位置獲取:
```sh
/api/v1/repos/:username/:reponame/signing-key.gpg
```