Skip to main content

Sobre autoridades certificadas de SSH

Com uma autoridade de certificação SSH, sua organização ou conta empresarial pode oferecer certificados SSH que os membros e colaboradores externos podem usar ao acessar seus recursos com o Git.

Sobre autoridades certificadas de SSH

Um certificado SSH é um mecanismo utilizado para uma chave SSH assinar outra chave SSH. Se você usa uma autoridade de certificação (CA) SSH para fornecer certificados SSH aos membros e colaboradores externos da sua organização, então pode adicionar a CA em sua conta empresarial ou organização para permitir que os colaboradores da organização usem os certificados deles para acessar os recursos da organização.

Depois de adicionar uma CA SSH à sua organização ou conta empresarial, você pode usar a CA para assinar certificados SSH de cliente para membros da organização e colaboradores externos. Esses colaboradores da organização podem usar os certificados de autenticação para ter acesso aos repositórios da organização.

Os certificados adicionados à sua empresa concedem acesso a todas as organizações pertencentes à sua conta corporativa. Para saber mais, confira Aplicando políticas para configurações de segurança na sua empresa.

Você pode exigir que os membros usem certificados SSH para acessar os recursos da organização, a menos que o SSH esteja desativado no seu repositório.

Opcionalmente, você pode exigir que os membros e colaboradores externos utilizem certificados SSH para acessar recursos da organização. Para saber mais, confira Gerenciar autoridades certificadas de SSH da organização e Aplicando políticas para configurações de segurança na sua empresa.

Por exemplo, você pode desenvolver um sistema interno que emite um novo certificado para seus desenvolvedores todas as manhãs. Cada desenvolvedor pode usar seu certificado diário para trabalhar nos repositórios GitHubda sua organização. No final do dia, o certificado pode expirar automaticamente, protegendo seus repositórios caso o certificado seja adulterado mais tarde.

Os membros não podem usar o certificado para acessar bifurcações dos repositórios da organização, a menos que a empresa tenha permitido que as ACs (Autoridades de Certificação) SSH acessem repositórios de propriedade do usuário. Para saber mais, confira Sobre autoridades certificadas de SSH.

Sobre os URLs do SSH com certificados SSH

Se sua organização exigir certificados SSH, para evitar erros de autenticação, os membros da organização e os colaboradores externos deverão usar um URL especial que inclua o ID da organização quando executar operações do Git por meio do SSH. Este URL especial permite que o cliente e servidor negociem mais facilmente qual chave no computador do integrante deverá ser usada para autenticação. Se um membro usar a URL normal, que começa com git@HOSTNAME, o cliente SSH poderá oferecer a chave errada, causando uma falha na operação.

Qualquer pessoa com acesso de leitura no repositório pode encontrar essa URL selecionando o menu suspenso Código na página principal do repositório e clicando em Usar o SSH.

Se a sua organização não exige certificados SSH, os integrantes podem continuar usando suas próprias chaves SSH ou outros meios de autenticação. Nesse caso, a URL especial ou a URL normal, que começa com git@HOSTNAME, funcionará.

Emitindo certificados

Ao emitir cada certificado, você deve incluir uma extensão que especifica para qual GitHub usuário o certificado é usado. Você pode referenciar o usuário usando seu identificador de logon ou sua ID de usuário. Por exemplo, você pode usar o comando do OpenSSH, substituindo KEY-IDENTITY por sua identidade de chave e USERNAME por um ssh-keygen nome de usuárioGitHub ou ID de usuário. O certificado que você gerar será autorizado a agir em nome desse usuário para qualquer um dos recursos da sua organização. Certifique-se de validar a identidade do usuário antes de emitir o certificado.

Observação

Você precisa fazer a atualização para o OpenSSH 7.6 ou posterior para usar esses comandos.

Para usar o login para identificar o usuário, use extension:login:

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

Para usar a ID do usuário, use extension:id:

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

Aviso

Depois que um certificado for assinado e emitido, o certificado não poderá ser revogado.

Para CAs carregadas no GitHub Enterprise Server versão 3.13 ou posterior, você deve usar o sinalizador -V para configurar uma validade inferior a 366 dias para o certificado. Para CAs carregadas antes da versão 3.13, o sinalizador -V é opcional, e você pode criar certificados irrevogáveis e permanentes.

Se você tiver CAs herdadas isentas do requisito de expiração, você poderá atualizar a AC para impor o requisito. Para saber mais, confira Gerenciar autoridades certificadas de SSH da organização e Aplicando políticas para configurações de segurança na sua empresa.

Se você usar um nome de usuário como a extensão de logon, GitHub valida que o usuário nomeado não foi renomeado desde que o certificado foi emitido. Isso evita um ataque de renomeação, em que um certificado emitido para um nome de usuário permanecerá válido mesmo se a conta de usuário subjacente for alterada. Para impor isso, o certificado deve incluir a alegação valid_after, que nos diz quando o certificado foi emitido. Esse campo geralmente não estará presente se uma expiração não for requerida para o certificado e é por isso que agora expirações são obrigatórias.

Para emitir um certificado para alguém que usa o SSH para acessar vários GitHub produtos, você pode incluir duas extensões de logon para especificar o nome de usuário para cada produto. Por exemplo, o comando a seguir emitiria um certificado para USERNAME-1 para a conta GitHub Enterprise Clouddo usuário e USERNAME-2 para a conta do usuário em GitHub Enterprise Server ou GitHub Enterprise Cloud com residência de dados no 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

Você pode restringir os endereços IP dos quais um membro da organização pode acessar os recursos da sua organização usando uma extensão source-address. A extensão aceita um endereço IP específico ou um intervalo de endereços IP usando a notação CIDR. É possível especificar vários endereços ou intervalos separando os valores com vírgulas. Para obter mais informações, confira Roteamento entre domínios sem classes na Wikipédia.

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