使用生成密钥对时ssh-keygen
,可以通过-t
以下方式指定所需的签名类型ssh-keygen -t ssh-rsa
:我想知道,一旦创建密钥对,ssh 私钥的签名类型就不能更改吗?
如果可以更改,我可以使用哪个工具来更改签名类型?如何?
我问这个问题是因为我的一个旧密钥使用ssh-rsa
签名类型,现在ssh-rsa
签名算法已被弃用。
如果您使用 创建常规 SSH 密钥对ssh-keygen -t rsa
,该密钥将根本不包含任何签名 - 它实际上只是一个 RSA 密钥对,没有其他任何内容,就像以前一样。SSH 密钥没有签名类型;SSH 连接有一个。
对于此类密钥,当连接两端都支持较新的签名算法时,足够现代的 SSH 版本将自动使用rsa-sha2-512
或签名。rsa-sha2-256
在 SSH 密钥身份验证中,签名是暂时的,仅在连接协商时创建,之后就会被丢弃。因此,无需更改现有的 SSH RSA 密钥即可使用新签名。
(如果运行ssh-keygen -f id_rsa -l
,输出通常会显示“SHA256”:这意味着 SHA256 算法用于生成密钥的指纹,该指纹不存储在密钥本身中,而是按需计算。使用ssh-keygen -f id_rsa -l -E md5
,您可以计算旧的-来自同一密钥的 MD5 指纹样式。)
但是,如果您使用集中管理的SSH 证书,即如果您有类似的文件id_rsa-cert.pub
,那么这些证书中将嵌入长期签名。要摆脱已弃用的签名算法,您需要重新颁发证书,很可能是由您组织自己的 SSH 密钥证书颁发机构重新颁发。
您可以向证书颁发机构提供现有 SSH 公钥的副本(如果他们尚未存档),他们将运行:
ssh-keygen -s /path/to/ca_key -I key_id /path/to/user_key.pub
Run Code Online (Sandbox Code Playgroud)
就像最初颁发证书时一样。
该命令将生成一个新/path/to/user_key-cert.pub
文件,如果 CA 使用最新的,该文件将默认ssh-keygen
包含使用较新算法的 CA 签名。rsa-sha2-512
您仍将使用与以前相同的私钥,但需要分发重新颁发的证书(本质上是公钥的集中认证副本,具有一些额外的管理功能,例如可选的到期日期和保证 CA 定义的key_id
字符串每当此证书用于身份验证时都会被记录)。
当然,CA 可以决定是否接受先前认证的 SSH 公钥副本来重新颁发证书;他们可能会要求您同时创建一个新的私钥,但这将是一个政策问题,而不是技术问题。
归档时间: |
|
查看次数: |
1509 次 |
最近记录: |