Skip to main content

Управление закрытыми ключами для приложений GitHub

Вы можете управлять закрытыми ключами для проверки подлинности с помощью GitHub App.

О закрытых ключах для GitHub Apps

После создания GitHub Appнеобходимо создать закрытый ключ, чтобы выполнять запросы к API GitHub в качестве самого приложения. Например, для запроса маркера доступа к установке требуется закрытый ключ для подписи веб-маркера JSON (JWT). Дополнительные сведения см. в разделе "Создание веб-маркера JSON (JWT) для приложения GitHub"

Вы можете создать несколько закрытых ключей, а затем менять скомпрометированные или потерянные ключи, чтобы избежать простоя. Чтобы убедиться, что закрытый ключ соответствует открытому ключу, см. раздел "Проверка закрытых ключей".

Закрытые ключи не истекают и вместо этого необходимо отменить вручную. Дополнительные сведения о том, как отозвать закрытый ключ, см. в разделе "Удаление закрытых ключей".

Для защиты данных GitHub Apps необходимо сохранить закрытые ключи. Дополнительные сведения см. в разделе "Хранение закрытых ключей".

Создание закрытых ключей

Чтобы создать закрытый ключ, выполните следующие действия.

  1. В правом верхнем углу любой страницы на GitHubщелкните фото профиля.
  2. Перейдите к настройкам учетной записи.
    • Для приложения, принадлежащих личная учетная запись, щелкните Параметры.
    • Для приложения, принадлежащих организации:
      1. Щелкните Your organizations (Ваши организации).
      2. Справа от организации щелкните Параметры.
  3. На левой боковой панели щелкните Параметры разработчика.
  4. На левой боковой панели щелкните GitHub Apps.
  5. Рядом с GitHub App, для которого требуется создать закрытый ключ, нажмите кнопку "Изменить".
  6. В разделе "Закрытые ключи" нажмите кнопку "Создать закрытый ключ".
  7. Вы увидите скачанный на компьютер закрытый ключ в формате PEM. Не забудьте сохранить этот файл, поскольку GitHub хранит только открытую часть ключа. Дополнительные сведения о безопасном хранении ключа см. в разделе "Хранение закрытых ключей".

Примечание. Если вы используете библиотеку, для которой требуется определенный формат файлов, скачанный файл PEM будет иметь формат PKCS#1 RSAPrivateKey.

Проверка закрытых ключей

GitHub создает отпечаток для каждой пары закрытого и открытого ключей с помощью хэш-функции SHA-256. Вы можете проверить, соответствует ли закрытый ключ открытому ключу, хранящемуся в GitHub, создав отпечаток закрытого ключа и сравнив его с отпечатком в GitHub.

Для проверки закрытого ключа выполните следующее.

  1. Найдите отпечаток для пары закрытых и открытых ключей, которую вы хотите проверить в разделе "Закрытые ключи" страницы параметров для GitHub App. Дополнительные сведения см. в разделе "Создание закрытых ключей".

    Снимок экрана: закрытый ключ на странице параметров GitHub App. Отпечатки пальцев, часть закрытого ключа после двоеточия, очертены темно-оранжевым цветом.

  2. Создайте отпечаток закрытого ключа (PEM) локально с помощью следующей команды:

    openssl rsa -in PATH_TO_PEM_FILE -pubout -outform DER | openssl sha256 -binary | openssl base64
    
  3. Сравните результаты локально созданного отпечатка с отпечатком, который отображается в GitHub.

Удаление закрытых ключей

Вы можете удалить потерянный или скомпрометированный закрытый ключ, удалив его, но перед удалением существующего ключа необходимо повторно создать новый ключ.

  1. В правом верхнем углу любой страницы на GitHubщелкните фото профиля.
  2. Перейдите к настройкам учетной записи.
    • Для приложения, принадлежащих личная учетная запись, щелкните Параметры.
    • Для приложения, принадлежащих организации:
      1. Щелкните Your organizations (Ваши организации).
      2. Справа от организации щелкните Параметры.
  3. На левой боковой панели щелкните Параметры разработчика.
  4. На левой боковой панели щелкните GitHub Apps.
  5. Рядом с GitHub App, для которого требуется удалить закрытый ключ, нажмите кнопку "Изменить".
  6. В разделе "Закрытые ключи" справа от закрытого ключа, который требуется удалить, нажмите кнопку "Удалить".
  7. При появлении запроса подтвердите удаление закрытого ключа, нажав кнопку "Удалить". Если ваш GitHub App имеет только один ключ, необходимо создать новый ключ перед удалением старого ключа. Дополнительные сведения см. в разделе "Создание закрытых ключей".

Хранение закрытых ключей

Закрытый ключ — это самый ценный секрет для GitHub App. Попробуйте сохранить ключ в хранилище ключей, например Azure Key Vault, и сделать его только для входа. Это помогает гарантировать, что закрытый ключ не будет потерян. После отправки закрытого ключа в хранилище ключей он никогда не может быть прочитан. Его можно использовать только для подписывания вещей, а доступ к закрытому ключу определяется правилами инфраструктуры.

Кроме того, ключ можно сохранить в качестве переменной среды. Это не так сильно, как хранение ключа в хранилище ключей. Если злоумышленник получает доступ к среде, он может считывать закрытый ключ и получать постоянную проверку подлинности как GitHub App.

Не следует жестко кодировать закрытый ключ в приложении, даже если код хранится в частном репозитории.

Дополнительные сведения см. в разделе Рекомендации по созданию приложения GitHub.