В настоящее время OpenSSH 7.8 (Fedora 28 / Arch) не может согласовывать с сервером OpenSSH 7.4 (CentOS 7), используя ключ, подписанный сертификатом, как описано в сообщении об ошибке на bugzilla redhat. Примечания к выпуску OpenSSH указывает, что изменение в алгоритме согласования подписи теперь должно быть явно определено. Хотя теперь разрешены 2 новых алгоритма подписи (начиная с 7.7), ошибка или намеренная ошибка, сертификат пользователя ssh-rsa-cert-v01@openssh.com больше не может использоваться для аутентификации.
Действия по воспроизведению:
Я пытаюсь обойти эту проблему, изменив алгоритм, используемый в процессе подписания сертификата.
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 день спустя)
По словам пользователя на #openssh, алгоритм подписи сертификата задается ключом, который используется для подписи закрытого ключа. Это означает, что если я смогу выяснить, как изменить алгоритм RSA с RSA: SHA1 на RSA: SHA2, я смогу заставить алгоритм подписи сертификата быть sha2-256, что возможно с обеих сторон с дополнительной работой.
Обновление: (12 дней спустя)
Наблюдая за представленным отчетом об ошибке, было мало прогресса ... или так казалось. Мне удалось неформально поговорить с сотрудником RHEL, который посмотрел на мою ошибку и заявил, что на нее смотрят нужные люди, и, поскольку это также влияет на RHEL, вероятно, будет исправление с RHEL / CentOS 7.6