Изменить алгоритм подписи сертификата по умолчанию в ssh-keygen

В настоящее время OpenSSH 7.8 (Fedora 28/Arch) не может выполнить согласование с сервером OpenSSH 7.4 (CentOS 7), использующим ключ, подписанный сертификатом, как описано в сообщении об ошибке в bugzilla от redhat. Примечания к выпуску OpenSSH указывают на то, что изменение алгоритма согласования подписи теперь должно быть явно задано. Хотя теперь разрешено 2 новых алгоритма подписи (начиная с 7.7), ошибка или намерение, ssh-rsa-cert-v01@openssh.com, пользовательский сертификат больше не может использоваться для аутентификации.

Действия по воспроизведению:

  1. ssh-keygen -t rsa -b 2048 -f тест
  2. ssh-keygen -s cert.key -I "signaturecert" -n testuser test.pub
  3. ssh -i test -vvv user @ serverip

Я пытаюсь обойти эту проблему, изменив алгоритм, используемый в процессе подписи сертификата.

ssh-keygen -L -f test.crt
test.crt:
    Type: ssh-rsa-cert-v01@openssh.com user certificate
    Public key: RSA-CERT SHA256:<fingerprint>
    Signing CA: RSA SHA256:<fingerprint>

По умолчанию для ssh-keygen является подпись ключа в ssh-rsa-cert-v01@openssh.com.

Согласно документу 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:

    ssh-rsa-cert-v01@openssh.com
    ssh-dss-cert-v01@openssh.com
    ecdsa-sha2-nistp256-cert-v01@openssh.com
    ecdsa-sha2-nistp384-cert-v01@openssh.com
    ecdsa-sha2-nistp521-cert-v01@openssh.com

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

    rsa-sha2-256-cert-v01@openssh.com
    rsa-sha2-512-cert-v01@openssh.com

Это говорит о том, что доступно 7 типов ключей, как мне указать один из них в процессе подписи сертификата ssh-keygen.

Пожалуйста, обратите внимание:

  • Следующее изменение конфигурации на клиенте или сервере не работает для меня.

    PubkeyAcceptedKeyTypes rsa-sha2-256, rsa-sha2-512, rsa-sha2-256-cert-v01 @ openssh.com, rsa-sha2-512-cert-v01 @ openssh.com, ssh-rsa-cert-v01 @ openssh.com

  • Подписание ключа в формате ed25519 не имеет обратной совместимости с серверами с openssh 5.3, такими как CentOS 6, и поэтому не будет рассматриваться как решение.

Здесь возможны два решения.

  1. Найдите подходящий обходной путь, чтобы снова разрешить ssh-rsa-cert-v01@openssh.com пользовательские сертификаты.
  2. Найдите способ изменить алгоритм подписи сертификата в ssh-keygen.

Обновление: ( 1 день спустя)

По словам пользователя на #openssh, алгоритм подписи сертификата устанавливается ключом, используемым для подписи закрытого ключа. Это означает, что, если я смогу понять, как изменить алгоритм RSA с RSA:SHA1 на RSA:SHA2, я мог бы заставить алгоритм подписи сертификата быть sha2-256, что возможно с обеих сторон при дополнительном обходном пути.

Обновление: ( 12 дней спустя)

Смотря отчет об ошибке, был достигнут небольшой прогресс... или так оно и появилось. Мне удалось неформально поговорить с сотрудником RHEL, который посмотрел на мою ошибку и заявил, что на нее смотрят правильные люди, и поскольку это также влияет, RHEL, скорее всего, исправит RHEL/CentOS 7.6

1 ответ

В связанной статье документируется следующий подход:

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

Ключевым моментом является-t rsa-sha2-256параметр.

Другие вопросы по тегам