Docs para autenticação baseada em certificado OpenSSH CA

5

O OpenSSH 5.4 adicionou um novo método para a autenticação de certificados ( alterações ).

 * Add support for certificate authentication of users and hosts using a
   new, minimal OpenSSH certificate format (not X.509). Certificates
   contain a public key, identity information and some validity
   constraints and are signed with a standard SSH public key using
   ssh-keygen(1). CA keys may be marked as trusted in authorized_keys
   or via a TrustedUserCAKeys option in sshd_config(5) (for user
   authentication), or in known_hosts (for host authentication).

   Documentation for certificate support may be found in ssh-keygen(1),
   sshd(8) and ssh(1) and a description of the protocol extensions in
   PROTOCOL.certkeys.

Existe algum guia ou documentação além do que é mencionado na página man do ssh-keygen? A página man abrange como gerar certificados e usá-los, mas não parece fornecer muita informação sobre a configuração da autoridade de certificação. Por exemplo, posso assinar as chaves com uma CA intermediária e fazer com que o servidor confie na CA pai?

Esse comentário sobre o novo recurso parece significar que eu poderia configurar meus servidores para confiar na autoridade de certificação, configurar um método para assinar chaves e, em seguida, os usuários não precisariam publicar suas chaves individuais no servidor. Isso também parece suportar a expiração de chave, o que é ótimo, já que se livrar de chaves antigas / inválidas é mais difícil do que deveria ser. Mas espero encontrar mais alguma documentação sobre como descrever a configuração total do CA, do servidor SSH e das configurações do cliente SSH necessárias para que isso funcione.

    
por Zoredache 02.03.2011 / 22:18

3 respostas

2

Na verdade, os documentos parecem um pouco escassos. O arquivo PROTOCOL.certkeys provavelmente é seu melhor lugar para ir para a documentação de baixo nível re: esse recurso.

re: usando CAs intermediárias, dê uma olhada nesta citação desse documento:

"Chained" certificates, where the signature key type is a certificate type itself are NOT supported.

Se eu estiver lendo isso corretamente, usar uma CA intermediária é expressamente impossível. Em geral, parece que esta é uma implementação de PKI realmente básica, e você provavelmente deveria jogar fora a maior parte do que você esperaria em um mundo PKI X.509.

    
por 02.03.2011 / 22:43
2

Eu postei como gerar e usar certificados ssh no ServerFault aqui .

Resumindo:

  1. gera o ca_key (assim como a chave rsa ou dsa normal)
  2. gerar certificado de host usando ca_key
  3. instalar o certificado de host no host de destino, configurando o sshd para adequar
  4. gera certificados de cliente usando ca_key (o certificado resultante pode ter várias restrições, como force-command, no-agent-forwarding, no-x11-forwarding, etc; junto com restrições de idade). O certificado do cliente pode ser para um ou vários hosts e para um ou vários usuários.

O problema que tenho é como revogar certificados ssh. Ter que alterar o certificado de host claramente obvia o valor de ter uma CA central e um certificado de host.

    
por 29.04.2011 / 03:54
1

Material interessante.

Os arquivos regress / cert-hostkey.sh e regress / cert-userkey.sh, que estão incluídos no código-fonte do OpenSSH, parecem fornecer uma boa visão geral do que esse recurso cobre em termos de autenticação e autorização de usuários / hosts com uma CA.

Quanto aos usuários terem que publicar suas chaves: Pelo que eu sei, desde que o certificado fornecido pelo usuário seja devidamente assinado e as restrições ao certificado não proíbam o usuário de acessar essa máquina, ele terá permissão para logon. Nenhuma publicação necessária.

    
por 02.03.2011 / 23:05