Alterar algoritmo de assinatura de certificado padrão em ssh-keygen

Alterar algoritmo de assinatura de certificado padrão em ssh-keygen

Atualmente, o OpenSSH 7.8 (Fedora 28/Arch) não é capaz de negociar com um servidor OpenSSH 7.4 (CentOS 7) utilizando uma chave assinada por certificado, conforme descritoem um bug arquivado no bugzilla do redhat.Notas de lançamento do OpenSSHindicar uma alteração no algoritmo de negociação de assinatura agora deve ser definida explicitamente. Embora 2 novos algoritmos de assinaturas sejam agora permitidos (desde 7.7), um bug ou intencionalmente,[e-mail protegido]o certificado do usuário não pode mais ser usado para autenticação.

Passos para reproduzir:

  1. ssh-keygen -t rsa -b 2048 -f teste
  2. ssh-keygen -s cert.key -I "signedcert" -n testuser test.pub
  3. ssh -i teste -vvv usuário@serverip

Estou tentando solucionar esse problema modificando o algoritmo utilizado no processo de assinatura do certificado.

ssh-keygen -L -f test.crt
test.crt:
    Type: [email protected] user certificate
    Public key: RSA-CERT SHA256:<fingerprint>
    Signing CA: RSA SHA256:<fingerprint>

O padrão para ssh-keygen é assinar a chave[e-mail protegido].

De acordo com o documento OpenSSH 7.8, PROTOCOL.certkeys.

All certificate types include certification information along with the
public key that is used to sign challenges. In OpenSSH, ssh-keygen
performs the CA signing operation.

Certified keys are represented using new key types:

    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]

Two additional types exist for RSA certificates to force use of
SHA-2 signatures (SHA-256 and SHA-512 respectively):

    [email protected]
    [email protected]

Isso me diz que existem 7 tipos de chave disponíveis. Como especifico um no processo de assinatura de certificado ssh-keygen.

Observe:

  • A seguinte alteração de configuração no cliente ou servidor não funciona para mim.

    PubkeyAcceptedKeyTypes rsa-sha2-256,rsa-sha2-512,[e-mail protegido],[e-mail protegido],[e-mail protegido]

  • Assinar a chave no formato ed25519 não é compatível com versões anteriores de servidores com openssh 5.3, como CentOS 6 e, portanto, não será considerada uma solução.

Duas soluções são possíveis aqui.

  1. Encontre uma solução alternativa adequada para permitir[e-mail protegido] certificados de usuário novamente.
  2. Encontre uma maneira de alterar o algoritmo de assinatura de certificado em ssh-keygen.

Atualização: (1 dia depois)

De acordo com um usuário do #openssh, um algoritmo de assinatura de certificado é definido pela chave usada para assinar a chave privada. Isso significa que, se eu conseguir descobrir como alterar o algoritmo RSA de RSA:SHA1 para RSA:SHA2, poderei forçar o algoritmo de assinatura de certificado a ser sha2-256, o que é possível em ambos os lados com uma solução adicional.

Atualização: (12 dias depois)

Observando o relatório de bug enviado, houve pouco progresso... ou assim pareceu. Consegui ter uma conversa informal com um funcionário do RHEL que deu uma olhada no meu bug e afirmou que as pessoas certas estão olhando para ele e, como isso também está afetando o RHEL, provavelmente terá uma correção com o RHEL/CentOS 7.6

Responder1

Oartigo vinculadodocumenta a seguinte abordagem:

ssh-keygen -s cert.key -I "signedcert" -n testuser  -t rsa-sha2-256 test.pub

A chave é o -t rsa-sha2-256parâmetro.

informação relacionada