Skip to main content

Сведения о центрах сертификации SSH

С помощью центра сертификации SSH ваша организация или корпоративная учетная запись может предоставлять сертификаты SSH, которые члены и внешний участник совместной работы могут использовать для доступа к ресурсам с помощью Git.

Сведения о центрах сертификации SSH

Сертификат SSH используется для подписания одного ключа SSH другим ключом SSH. Если вы используете центр сертификации SSH для предоставления членам организации и внешний участник совместной работы с подписанными сертификатами SSH, вы можете добавить ЦС в учетную запись предприятия или организацию, чтобы позволить этим участникам организации использовать свои сертификаты для доступа к ресурсам организации.

После добавления ЦС SSH в вашу организацию или корпоративную учетную запись можно использовать ЦС для подписывания сертификатов SSH клиента для членов организации и внешний участник совместной работы. Эти участники организации могут использовать подписанные сертификаты для доступа к репозиториям этой организации.

Сертификаты, добавленные в корпоративный доступ ко всем организациям, принадлежащим вашей корпоративной учетной записи. Дополнительные сведения см. в разделе Применение политик для параметров безопасности в вашем предприятии.

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

При необходимости можно требовать, чтобы участники и внешний участник совместной работы использовали сертификаты SSH для доступа к ресурсам организации. Дополнительные сведения см. в разделе [AUTOTITLE и Управление центрами сертификации SSH в вашей организации](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise#managing-ssh-certificate-authorities-for-your-enterprise).

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

Участники не могут использовать сертификат для доступа к вилкам репозиториев организации, если только предприятие не позволило ЦС SSH получить доступ к репозиториям пользователей. Дополнительные сведения см. в разделе Сведения о центрах сертификации SSH.

Сведения о URL-адресах SSH с сертификатами SSH

Если для организации требуются сертификаты SSH, чтобы предотвратить ошибки проверки подлинности, члены организации и внешний участник совместной работы должны использовать специальный URL-адрес, содержащий идентификатор организации при выполнении операций Git по протоколу SSH. Это позволит клиенту и серверу упростить согласование используемого для проверки подлинности ключа на компьютере участника. Если участник использует обычный URL-адрес, начинающийся с git@github.com, клиент SSH может предложить неправильный ключ, что приведет к сбою операции.

Этот URL-адрес любой пользователь с доступом на чтение к репозиторию может найти в раскрывающемся меню Код на главной странице репозитория, щелкнув Использовать SSH.

Если у вашей организации нет сертификатов SSH, участники могут продолжать использовать собственные ключи SSH или другие средства проверки подлинности. В таком случае подойдет как специальный URL-адрес, так и обычный URL-адрес, начинающийся с git@github.com.

Выдача сертификатов

При выдаче каждого сертификата необходимо включить расширение, указывающее, для какого пользователя GitHub указан сертификат. Вы можете ссылаться на пользователя с помощью дескриптора входа или идентификатор пользователя. Например, можно использовать команду OpenSSH ssh-keygen , заменив KEY-IDENTITY удостоверением ключа и именем ПОЛЬЗОВАТЕЛЯ GitHub имя пользователя или идентификатор пользователя. Создаваемый сертификат будет давать право действовать от имени этого пользователя при работе с любыми ресурсами вашей организации. Прежде чем выдавать сертификат, проверьте личность пользователя.

Note

Чтобы использовать эти команды, необходимо обновить до OpenSSH 7.6 или более поздней версии.

login Чтобы идентифицировать пользователя, используйтеextension:login:

ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:login@HOSTNAME=USERNAME ./user-key.pub

Чтобы использовать идентификатор пользователя, используйте extension:id:

ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:id@HOSTNAME=ID ./user-key.pub

Warning

После подписания и выдачи сертификата сертификат не может быть отменен.

Для ЦС, отправленных на GitHub Enterprise Server версии 3.13 или более поздней, необходимо использовать -V флаг для настройки времени существования менее 366 дней для сертификата. Для ЦС, отправленных до версии 3.13, флаг является необязательным, -V и вы можете создать сертификаты, которые являются необратимыми и жить вечно.

Если у вас есть устаревшие ЦС, исключенные из требования срока действия, можно обновить ЦС, чтобы применить это требование. Дополнительные сведения см. в разделе [AUTOTITLE и Управление центрами сертификации SSH в вашей организации](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise#managing-ssh-certificate-authorities-for-your-enterprise).

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

Чтобы выдать сертификат для пользователя, который использует SSH для доступа к нескольким продуктам GitHub, можно включить два расширения входа и указать имя пользователя для каждого продукта. Например, следующая команда выдает сертификат для ИМЕНИ ПОЛЬЗОВАТЕЛЯ-1 для учетной записи пользователя для GitHub Enterprise Cloudи USERNAME-2 для учетной записи пользователя на GitHub Enterprise Server в HOSTNAME.

ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:login@github.com=USERNAME-1 extension:login@HOSTNAME=USERNAME-2 ./user-key.pub

С помощью расширения source-address вы можете ограничить список IP-адресов, с которых участник организации может получать доступ к ее ресурсам. Это расширение принимает отдельные IP-адреса или диапазоны IP-адресов в нотации CIDR. Вы можете указать несколько адресов или диапазонов, разделяя значения запятыми. Дополнительные сведения см. в разделе "Бессерверная маршрутизация между доменами" в Википедии.

ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:login@HOSTNAME=USERNAME -O source-address=COMMA-SEPARATED-LIST-OF-IP-ADDRESSES-OR-RANGES ./user-key.pub