跳至主要内容

管理 GitHub 应用的私钥

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

关于 GitHub 应用的私钥

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

您可以为一个应用程序创建最多 25 个私钥。您应该使用多个密钥,以便在密钥泄露的情况下轮换密钥而不会出现停机时间。如果您的应用程序有 25 个或更多密钥,则必须删除一些密钥才能创建更多密钥。

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

您必须确保 GitHub App 的私钥安全。有关更多信息,请参阅“存储私钥”。

要验证私钥是否与公钥匹配,请参阅“验证私钥”。

生成私钥

要生成私钥

  1. 在 GitHub 上任何页面的右上角,点击您的个人资料照片。

  2. 导航到您的帐户设置。

    • 对于个人帐户拥有的应用程序,点击**设置**。
    • 对于组织拥有的应用程序
      1. 点击**您的组织**。
      2. 在组织的右侧,点击**设置**。
  3. 在左侧边栏中,点击** 开发者设置**。

  4. 在左侧边栏中,点击**GitHub Apps**。

  5. 在您要为其生成私钥的 GitHub App 旁边,点击**编辑**。

  6. 在“私钥”下,点击**生成私钥**。

  7. 您将看到一个 PEM 格式的私钥已下载到您的计算机上。请务必存储此文件,因为 GitHub 仅存储密钥的公钥部分。有关安全存储密钥的更多信息,请参阅“存储私钥”。

注意

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

验证私钥

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

要验证私钥

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

    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 Apps**。
  5. 在您要删除私钥的 GitHub App 旁边,点击**编辑**。
  6. 在“私钥”下,在要删除的私钥右侧,点击**删除**。
  7. 出现提示时,通过点击**删除**确认您要删除私钥。如果您的 GitHub App 只有一个密钥,则需要在删除旧密钥之前生成一个新密钥。有关更多信息,请参阅“生成私钥”。

存储私钥

私钥是 GitHub App 最有价值的机密之一。考虑将密钥存储在密钥保管库中,例如Azure Key Vault,并将其设置为仅签名。这有助于确保您不会丢失私钥。将私钥上传到密钥保管库后,将无法再从那里读取它。它只能用于对内容进行签名,并且对私钥的访问权限由您的基础架构规则决定。

或者,您可以将密钥存储为环境变量。这不如将密钥存储在密钥保管库中安全。如果攻击者访问了环境,他们可以读取私钥并作为 GitHub App 获得持久身份验证。

即使您的代码存储在私有存储库中,也不应在应用程序中硬编码私钥。

有关更多信息,请参阅“创建 GitHub App 的最佳实践”。