codecamp

GitHub 关于提交签名验证

使用 GPG 或 S/MIME 可在本地签名标记并提交。 这些标记或提交在 GitHub 上标示为已验证,便于其他人信任更改来自可信的来源。

关于提交签名验证

您可以本地签名提交和标记,以便其他人确认您的工作来自可信的来源。 如果提交或标记具有密码可验证的 GPG 或 S/MIME 签名,则 GitHub 会将提交或标记标示为已验证。

验证的提交

如果提交或标记具有无法验证的签名,则 GitHub 会将提交或标记标示为未验证。

仓库管理员可对分析实施必要的提交签名,以阻止未签名和验证的所有提交。 更多信息请参阅"关于必需提交签名"。

您可以在 GitHub 上检查已签名提交或标记的验证状态,并查看提交签名未验证的原因。 更多信息请参阅“检查提交和标记签名验证状态”。

GitHub 将自动使用 GPG 通过 GitHub web 界面对您创建的提交进行签名,当您压缩且合并您不是其作者的拉取请求时除外。 由 GitHub 签名的提交在 GitHub 上将具有已验证的状态。 您可以使用 https://github.com/web-flow.gpg 上的公钥本地验证签名。

GPG 提交签名验证

您可以使用 GPG 通过自己生成的 GPG 密钥对验证签名。

GitHub 使用 OpenPGP 库确认您本地签名的提交和标记,是否根据您添加到 GitHub 帐户的公钥进行加密验证。

要使用 GPG 对提交签名并在 GitHub 上验证这些提交,请执行以下步骤:

  1. 检查现有 GPG 密钥
  2. 生成新 GPG 密钥
  3. 新增 GPG 密钥到 GitHub 帐户
  4. 将您的签名密钥告诉 Git
  5. 对提交签名
  6. 对标记签名

S/MIME 提交签名验证

您可以使用 S/MIME 通过组织颁发的 X.509 密钥对提交签名。

GitHub 使用 Debian ca 证书包(Mozilla 浏览器使用的相同信任库)确认您本地签名的提交和标记可根据可信根证书中的公钥加密验证。

注:S/MIME 签名验证可用于 Git 2.19 或更高版本。 要更新 Git 版本,请参阅 Git 网站。

要使用 S/MIME 对提交签名并在 GitHub 上验证这些提交,请执行以下步骤:

  1. 将您的签名密钥告诉 Git
  2. 对提交签名
  3. 对标记签名

无需将公钥上传到 GitHub。

自动程序的签名验证

需要提交签名的组织和 GitHub 应用程序 可使用自动程序对提交签名。 如果提交或标记具有密码可验证的自动程序签名,则 GitHub 会将提交或标记标示为已验证。

自动程序的签名验证仅在请求被验证为 GitHub 应用程序 或自动程序并且不含自定义作者信息、自定义提交者信息、自定义签名信息(如提交 API)时才有效。

延伸阅读

GitHub 错误:我们正在进行 SSH 密钥审核
GitHub 检查现有 GPG 密钥
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

GitHub 身份验证

在 GitHub 上管理订阅和通知

在 GitHub 上管理活动的订阅

GitHub 组织和团队

GitHub 管理对组织仓库的 Git 访问

GitHub 计费和付款

GitHub 使用议题和拉取请求进行协作

GitHub 在具有代码质量功能的仓库上进行协作

管理在 GitHub 上的工作

GitHub 建立强大的社区

GitHub 管理仓库

GitHub 自定义 GitHub 工作流程

在 GitHub Marketplace 中购买并安装应用程序

通过 GitHub Jobs 寻找人才

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }