这个问题关于在服务器HOST证书已知被攻陷的情况下,在客户端主机端的SSHconfiguration。
简而言之:我们如何撤消SSH HOST证书,哪些文件需要在CLIENT端主机上更新,以便在ssh连接尝试期间响应服务器提供的证书被识别为撤销证书?
长版本:CLIENT证书:
每个用户生成一个密钥对,将公钥提交给客户端CA,客户端CA生成客户端证书并将其返回给用户。 用户将证书(以-cert.pub结尾)放在他的私钥旁边,当他添加私钥并提供密码时,它通过ssh-add加载。
客户端CA的公钥在服务器主机的可信CA文件中列出,并且由于CA出现在该文件中,sshd守护程序授权用户的连接。 它还检查指定证书的其他条件,例如未过期和在用户主体中进行帐户。 服务器还会检查证书是否已被吊销用户的文件。 因此,当用户的私钥和证书被泄露时,一旦通知CA,他撤销证书并将其分发给服务器主机被吊销的用户文件。
因此,当撤销的用户文件被更新时,受损的密钥和证书不再是威胁。
HOST证书:
每个主机节点都有一个由主机CA签名的主机证书。 每个客户机节点都具有全局已知的主机文件,通常是/ etc / ssh_known_hosts,已更新为包含给定主机CA的条目。 但似乎没有撤销主机文件的任何地方。
当客户端节点上的用户尝试ssh进入服务器主机时,ssh(在客户端主机上)接受由服务器主机提供的主机证书,因为签名该证书的签名中心的公钥是在ssh_known_hosts文件中的。
但是,何时何地该主机证书validation反对撤销? 主机上撤销的用户文件适用于有关INCOMING连接的客户端证书。 HOST证书需要在与服务器主机的OUTGOING连接上通过SSH进行检查,所提供的证书需要在客户端通过SSH进行检查。 如果没有这样做,唯一从受损主机密钥和证书中恢复的方法是将CA本身变为不可信,从客户机主机系统上的/ etc / ssh_known_hosts中删除。 这意味着所有具有由相同CA签名的证书的主机也将被呈现为未知主机。
那么,我们在客户端主机端放置了什么和在哪里撤销HOST信息,以便ssh将主机证书识别为撤销,并将HOST识别为不可信?
提前致谢
openssh为此指定一个configuration选项。
将以下行添加到/ etc / ssh / ssh_config中 :
RevokedHostKeys / etc / ssh / revoked_host_keys
该文件必须存在并可读,否则所有主机密钥将被拒绝。 该文件可以包含每个撤销的主机密钥的每行公用密钥。 或者它可以是一个更紧凑的KRL文件。
ssh-keygen可以从这样的文本文件生成一个KRL文件。
请参阅man ssh-keygen和man ssh_config以获取更多信息。
腮红..我正在回答我自己的问题。 对不起,我打扰了每个人到处寻找我的问题的答案,但只发现问题后发现我的答案。