跳至主要内容

管理 GitHub 应用的私钥

你可以管理私钥以使用你的 GitHub 应用进行身份验证。

有关 GitHub 应用的私钥

创建 GitHub 应用后,你需要生成一个私钥,以便以应用程序本身的身份向 GitHub API 发出请求。例如,你需要一个私钥来签署 JSON Web 令牌 (JWT),以便请求安装访问令牌。有关详细信息,请参阅“为 GitHub 应用生成 JSON Web 令牌 (JWT)”。

你可以创建多个私钥并对其进行轮换,以防止在密钥受损或丢失时出现停机。要验证私钥是否与公钥匹配,请参阅“验证私钥”。

私钥不会过期,而是需要手动撤销。有关如何撤销私钥的详细信息,请参阅“删除私钥”。

你必须确保 GitHub 应用的私钥安全。有关详细信息,请参阅“存储私钥”。

生成私钥

要生成私钥

  1. 在 GitHub 上的任何页面的右上角,单击您的个人资料照片。
  2. 导航到您的帐户设置。
    • 对于个人帐户拥有的应用,单击设置
    • 对于组织拥有的应用
      1. 单击您的组织
      2. 在组织的右侧,单击设置
  3. 在左侧边栏中,单击 开发者设置
  4. 在左侧边栏中,单击GitHub 应用
  5. 在您要为其生成私钥的 GitHub 应用旁边,单击编辑
  6. 在“私钥”下,单击生成私钥
  7. 您将看到下载到您计算机的 PEM 格式的私钥。确保存储此文件,因为 GitHub 仅存储密钥的公共部分。有关安全存储密钥的更多信息,请参阅“存储私钥”。

注意:如果您使用需要特定文件格式的库,则您下载的 PEM 文件将采用 PKCS#1 RSAPrivateKey 格式。

验证私钥

GitHub 使用 SHA-256 哈希函数为每个私钥和公钥对生成指纹。您可以通过生成私钥的指纹并将其与 GitHub 上显示的指纹进行比较来验证您的私钥是否与存储在 GitHub 上的公钥匹配。

要验证私钥

  1. 在 GitHub 应用的设置页面的“私钥”部分中,找到您要验证的私钥和公钥对的指纹。有关更多信息,请参阅“生成私钥”。

    Screenshot of a private key in a GitHub App settings page. The fingerprint, the part of the private key after the colon, is outlined in dark orange.

  2. 使用以下命令在本地生成私钥(PEM)的指纹

    openssl rsa -in PATH_TO_PEM_FILE -pubout -outform DER | openssl sha256 -binary | openssl base64
    
  3. 将本地生成的指纹的结果与您在 GitHub 中看到的指纹进行比较。

删除私钥

您可以通过删除丢失或受损的私钥来移除它,但在删除现有密钥之前,您必须重新生成一个新密钥。

  1. 在 GitHub 上的任何页面的右上角,单击您的个人资料照片。
  2. 导航到您的帐户设置。
    • 对于个人帐户拥有的应用,单击设置
    • 对于组织拥有的应用
      1. 单击您的组织
      2. 在组织的右侧,单击设置
  3. 在左侧边栏中,单击 开发者设置
  4. 在左侧边栏中,单击GitHub 应用
  5. 在您要删除私钥的 GitHub 应用旁边,单击编辑
  6. 在“私钥”下,单击要删除的私钥右侧的删除
  7. 出现提示时,单击删除确认要删除私钥。如果你的 GitHub 应用只有一个密钥,你需要在删除旧密钥之前生成一个新密钥。有关详细信息,请参阅“生成私钥”。

存储私钥

私钥是 GitHub 应用中最有价值的秘密。考虑将密钥存储在密钥保管库中,例如 Azure Key Vault,并使其只读。这有助于确保你不会丢失私钥。一旦私钥上传到密钥保管库,就永远无法从那里读取。它只能用于签名,对私钥的访问由你的基础设施规则决定。

或者,你可以将密钥存储为环境变量。这不如将密钥存储在密钥保管库中安全。如果攻击者获得了对环境的访问权限,他们可以读取私钥并以 GitHub 应用的身份获得持续身份验证。

你不应该在你的应用中硬编码你的私钥,即使你的代码存储在私有存储库中。

有关详细信息,请参阅“创建 GitHub 应用的最佳实践”。