Skip to main content

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

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

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

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

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

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

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

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

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

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

  1. В правом верхнем углу любой страницы на GitHubщелкните рисунок профиля.

  2. Перейдите к настройкам учетной записи.

    • Для приложения, принадлежащих личная учетная запись, нажмите кнопку "Параметры".
    • Для приложения, принадлежащих организации:
      1. Щелкните Your organizations (Ваши организации).
      2. Справа от организации нажмите кнопку "Параметры".
    • Для приложения, принадлежающего предприятия:
      1. Если вы используете Enterprise Managed Users, щелкните "Ваше предприятие ", чтобы перейти непосредственно к параметрам учетной записи предприятия.
      2. Если вы используете личная учетная запись, щелкните "Ваши предприятия", а затем справа от предприятия нажмите кнопку "Параметры".
  3. Перейдите к параметрам GitHub App .

    • Для приложения, принадлежащих личная учетная запись или организации:
      1. На левой боковой панели щелкните Параметры разработчика, а затем выберите GitHub Apps.
    • Для приложения, принадлежаемого предприятием:
      1. На левой боковой панели в разделе "Параметры", щелкните **GitHub Apps.
  4. Рядом с GitHub App, для которого требуется создать закрытый ключ, нажмите кнопку "Изменить".

  5. В разделе "Закрытые ключи" нажмите кнопку "Создать закрытый ключ".

  6. Вы увидите скачанный на компьютер закрытый ключ в формате 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. Справа от организации нажмите кнопку "Параметры".
    • Для приложения, принадлежающего предприятия:
      1. Если вы используете Enterprise Managed Users, щелкните "Ваше предприятие ", чтобы перейти непосредственно к параметрам учетной записи предприятия.
      2. Если вы используете личная учетная запись, щелкните "Ваши предприятия", а затем справа от предприятия нажмите кнопку "Параметры".
  3. На левой боковой панели щелкните Параметры разработчика.
  4. На левой боковой панели щелкните GitHub Apps.
  5. Рядом с GitHub App, для которого требуется удалить закрытый ключ, нажмите кнопку "Изменить".
  6. В разделе "Закрытые ключи" справа от закрытого ключа, который требуется удалить, нажмите кнопку "Удалить".
  7. При появлении запроса подтвердите удаление закрытого ключа, нажав кнопку "Удалить". Если ваш GitHub App имеет только один ключ, необходимо создать новый ключ перед удалением старого ключа. Дополнительные сведения см. в разделе "Создание закрытых ключей".

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

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

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

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

Дополнительные сведения см. в разделе Лучшие практики создания приложения на GitHub.