有关 GitHub 应用的私钥
创建 GitHub 应用后,你需要生成一个私钥,以便以应用程序本身的身份向 GitHub API 发出请求。例如,你需要一个私钥来签署 JSON Web 令牌 (JWT),以便请求安装访问令牌。有关详细信息,请参阅“为 GitHub 应用生成 JSON Web 令牌 (JWT)”。
你可以创建多个私钥并对其进行轮换,以防止在密钥受损或丢失时出现停机。要验证私钥是否与公钥匹配,请参阅“验证私钥”。
私钥不会过期,而是需要手动撤销。有关如何撤销私钥的详细信息,请参阅“删除私钥”。
你必须确保 GitHub 应用的私钥安全。有关详细信息,请参阅“存储私钥”。
生成私钥
要生成私钥
- 在 GitHub 上的任何页面的右上角,单击您的个人资料照片。
- 导航到您的帐户设置。
- 对于个人帐户拥有的应用,单击设置。
- 对于组织拥有的应用
- 单击您的组织。
- 在组织的右侧,单击设置。
- 在左侧边栏中,单击 开发者设置。
- 在左侧边栏中,单击GitHub 应用。
- 在您要为其生成私钥的 GitHub 应用旁边,单击编辑。
- 在“私钥”下,单击生成私钥。
- 您将看到下载到您计算机的 PEM 格式的私钥。确保存储此文件,因为 GitHub 仅存储密钥的公共部分。有关安全存储密钥的更多信息,请参阅“存储私钥”。
注意:如果您使用需要特定文件格式的库,则您下载的 PEM 文件将采用 PKCS#1 RSAPrivateKey
格式。
验证私钥
GitHub 使用 SHA-256 哈希函数为每个私钥和公钥对生成指纹。您可以通过生成私钥的指纹并将其与 GitHub 上显示的指纹进行比较来验证您的私钥是否与存储在 GitHub 上的公钥匹配。
要验证私钥
-
在 GitHub 应用的设置页面的“私钥”部分中,找到您要验证的私钥和公钥对的指纹。有关更多信息,请参阅“生成私钥”。
-
使用以下命令在本地生成私钥(PEM)的指纹
openssl rsa -in PATH_TO_PEM_FILE -pubout -outform DER | openssl sha256 -binary | openssl base64
-
将本地生成的指纹的结果与您在 GitHub 中看到的指纹进行比较。
删除私钥
您可以通过删除丢失或受损的私钥来移除它,但在删除现有密钥之前,您必须重新生成一个新密钥。
- 在 GitHub 上的任何页面的右上角,单击您的个人资料照片。
- 导航到您的帐户设置。
- 对于个人帐户拥有的应用,单击设置。
- 对于组织拥有的应用
- 单击您的组织。
- 在组织的右侧,单击设置。
- 在左侧边栏中,单击 开发者设置。
- 在左侧边栏中,单击GitHub 应用。
- 在您要删除私钥的 GitHub 应用旁边,单击编辑。
- 在“私钥”下,单击要删除的私钥右侧的删除。
- 出现提示时,单击删除确认要删除私钥。如果你的 GitHub 应用只有一个密钥,你需要在删除旧密钥之前生成一个新密钥。有关详细信息,请参阅“生成私钥”。
存储私钥
私钥是 GitHub 应用中最有价值的秘密。考虑将密钥存储在密钥保管库中,例如 Azure Key Vault,并使其只读。这有助于确保你不会丢失私钥。一旦私钥上传到密钥保管库,就永远无法从那里读取。它只能用于签名,对私钥的访问由你的基础设施规则决定。
或者,你可以将密钥存储为环境变量。这不如将密钥存储在密钥保管库中安全。如果攻击者获得了对环境的访问权限,他们可以读取私钥并以 GitHub 应用的身份获得持续身份验证。
你不应该在你的应用中硬编码你的私钥,即使你的代码存储在私有存储库中。
有关详细信息,请参阅“创建 GitHub 应用的最佳实践”。