ubuntu 16.04. ssh 主机证书撤销

ubuntu 16.04. ssh 主机证书撤销

该问题涉及当已知服务器主机证书已被泄露时在客户端主机端的 SSH 配置。

简而言之:我们如何撤销 SSH HOST 证书,需要在客户端主机上更新哪些文件,以便在 ssh 连接尝试期间响应服务器提供的证书被识别为已撤销的证书?

长版本:客户端证书:

每个用户生成一个密钥对,将公钥提交给客户端 CA,后者生成客户端证书并将其返回给用户。用户将证书(以 -cert.pub 结尾)与私钥放在一起,当他添加私钥并提供密码时,ssh-add 会加载该证书。

CLIENT CA 的公钥列在服务器主机的受信任 CA 文件中,并且 sshd 守护程序授权用户的连接,因为 CA 出现在该文件中。它还检查证书指定的其​​他条件,例如未过期和用户主体中的帐户。服务器还会根据已撤销用户的文件检查证书是否已被撤销。因此,当用户的私钥和证书被泄露时,只要通知 CA,他就会撤销证书并将其分发到服务器主机已撤销用户的文件。

因此,当被撤销的用户文件被更新后,受损的密钥和证书不再构成威胁。

HOST 证书:

每个主机节点都有一个由主机 CA 签名的主机证书。每个客户端节点都有一个全局已知主机文件,通常为 /etc/ssh_known_hosts,该文件已更新为包含给定主机 CA 的条目。但似乎任何地方都没有被撤销的主机文件。

当客户端节点上的用户尝试通过 ssh 进入服务器主机时,ssh(在客户端主机上)会接受服务器主机提供的主机证书,因为签署该证书的签名机构的公钥位于 ssh_known_hosts 文件中。
但是,在何处和何时验证主机证书是否被撤销?主机上的已撤销用户文件适用于有关传入连接的客户端证书。在与服务器主机的传出连接上,需要通过 SSH 检查主机证书,需要在客户端通过 SSH 检查提供的证书是否被撤销。如果不这样做,从泄露的主机密钥和证书中恢复的唯一方法是让 CA 本身变得不受信任,并将其从客户端主机系统的 /etc/ssh_known_hosts 中删除。这意味着所有具有由同一 CA 签名的证书的主机也将被视为未知主机。

那么,我们应该在客户端主机端把已撤销的 HOST 信息放在哪里,以便 ssh 将主机证书识别为已撤销,并将 HOST 标识为不可信?

提前致谢

答案1

openssh 为此指定了一个配置选项。

将以下行添加到/etc/ssh/ssh_config

撤销主机密钥/etc/ssh/revoked_host_keys

该文件必须存在且可读,否则所有主机密钥都将被拒绝。该文件可以包含每行一个已撤销主机密钥的公钥。或者,它可以是更紧凑的 KRL 文件。

ssh-keygen 可以从这样的文本文件生成 KRL 文件。

有关更多信息,请参阅 man ssh-keygen 和 man ssh_config。

脸红了。。我在回答我自己的问题。抱歉打扰大家了,我到处寻找问题的答案,但直到发布问题后才找到答案。

相关内容