SSH x509 登录的替代方案

SSH x509 登录的替代方案

我有一台不属于域的 Windows 7 机器和一台 Linux 机器。

我想使用存储在 Windows 证书存储区中的 x509 证书从 Windows 登录到 Linux。

是否可以?

引用如何设置 OpenSSH 以使用 x509 PKI 进行身份验证?

我的意思不是简单地将X.509证书的公共RSA钥匙放入〜/.ssh/授权_Keys-我正在寻找一种设置SSH的方法,以便将预定的CA签名的X.509证书自动授予链接的用户帐户。

我不想为每个用户安装密钥,而只是想要安装 CA 证书和机器证书以及将证书 DN 映射到主机用户名来进行授权。

https://serverfault.com/questions/417518/windows-ca-to-issue-certificate-to-authenticate-ssh-to-a-linux-server?lq=1似乎只有使用分叉的 OpenSSH 服务器才有可能。按照那里的答案

我自己并不想偏离 OpenSSH 的主分支,安全性太重要了,而且我也没有资源来正确验证这一重大变化

该补丁长达 200KB,如果 OpenSSH 主分支没有大型社区,那么使用 C 这种不安全的语言很容易自食其果。此外,它似乎实现了一个较旧的草案,而不是RFC 6187

OpenSSH 社区对 x509 不感兴趣因为处理这么大的规范很麻烦:

开发人员保持了一种立场,即X.509证书的复杂性引入了SSHD的不可接受的攻击表面。

上述“替代证书格式”对我来说也不是一个好主意。X.509 得到广泛支持,因此 2 个证书和 1 个私钥可以在许多不同的地方使用,例如在 TLS、IPSec、S/MIME 和 CMS 的其他应用程序中。此外,不支持类似于 CRL 的集中撤销,因此使用泄露的私钥撤销“替代证书”非常繁琐且容易出错。

到目前为止,唯一可行的选择是 GSSAPI - 它甚至受到 PuTTY 的支持。

还有什么可以简化 SSH 密钥管理吗?

答案1

有一套用于向 OpenSSH 添加 X.509 证书支持的补丁由 Roumen Petrov 维护。这允许您使用 X.509 客户端证书来验证 SSH 连接。

例如,您可以这样做~/.ssh/authorized_keys

# X.509 by DN
x509v3-sign-rsa DN /C=US/O=Example org/OU=Administrators/CN=David Coles

缺点是,你还需要一个类似修补的 OpenSSH 客户端来连接到这些服务器,或者需要一个支持 X.509 证书的第三方 SSH 客户端(例如,安全CRT)。此外,很少有 Linux 发行版附带这些补丁,因此您可能必须自己应用补丁并构建 OpenSSH 服务器。

一种稍微不同的、不需要修改客户端的方法是使用正常的公钥认证,但使用 OpenSSH 的AuthorizedKeysCommand配置选项在集中式数据库中查找 SSH 密钥(例如,从该用户的 LDAP 属性中)。

答案2

我相信 GSSAPI 和密码回退是一个不错的选择。

上述“替代证书格式”对我来说也不是一个好主意。X.509 得到广泛支持,因此 2 个证书和 1 个私钥可以在许多不同的地方使用,例如在 TLS、IPSec、S/MIME 和 CMS 的其他应用程序中。此外,不支持类似于 CRL 的集中撤销,因此使用泄露的私钥撤销“替代证书”非常繁琐且容易出错。

是的,在两个不同的证书中重复使用一个私钥是一个非常糟糕的主意。实际上,将一个私钥用于不同的目的/协议是一个坏主意。尽管从技术上讲,可以同时将单个 x509v3 证书用于 TLS、IPSec、S/MIME 等,但这是一种加密不良做法,称为密钥重用

相关内容