更改 ssh-keygen 中的默认证书签名算法

更改 ssh-keygen 中的默认证书签名算法

目前,OpenSSH 7.8(Fedora 28/Arch)无法使用证书签名密钥与 OpenSSH 7.4(CentOS 7)服务器进行协商,如所述在 redhat 的 bugzilla 上提交的一个错误中OpenSSH 发行说明现在必须明确定义签名协商算法的变更。虽然现在允许使用 2 种新的签名算法(自 7.7 版起),但出于错误或故意,[电子邮件保护]用户证书不再能够用于身份验证。

重现步骤:

  1. ssh-keygen -t rsa -b 2048 -f 测试
  2. ssh-keygen -s cert.key -I “signedcert” -n testuser test.pub
  3. ssh -i 测试-vvv 用户@服务器ip

我正在尝试通过修改证书签名过程中使用的算法来解决此问题。

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

ssh-keygen 默认对密钥进行签名[电子邮件保护]

根据 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]

这告诉我有 7 种可用的密钥类型,如何在 ssh-keygen 证书签名过程中指定一种。

请注意:

  • 客户端或服务器上的以下配置更改对我来说不起作用。

    公钥接受密钥类型 rsa-sha2-256,rsa-sha2-512,[电子邮件保护][电子邮件保护][电子邮件保护]

  • 以 ed25519 格式签署密钥与使用 openssh 5.3 的服务器(例如 CentOS 6)不向后兼容,因此不会被视为解决方案。

这里可能有两种解决方案。

  1. 找到合适的解决方法来允许[电子邮件保护] 用户证书。
  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参数。

相关内容