基于OpenSSH CA的证书基于authentication的文档

OpenSSH 5.4添加了一个新的证书authentication方法( 更改 )。

* Add support for certificate authentication of users and hosts using a new, minimal OpenSSH certificate format (not X.509). Certificates contain a public key, identity information and some validity constraints and are signed with a standard SSH public key using ssh-keygen(1). CA keys may be marked as trusted in authorized_keys or via a TrustedUserCAKeys option in sshd_config(5) (for user authentication), or in known_hosts (for host authentication). Documentation for certificate support may be found in ssh-keygen(1), sshd(8) and ssh(1) and a description of the protocol extensions in PROTOCOL.certkeys. 

除ssh-keygen手册页中提到的内容外,是否有任何指南或文档? 手册页介绍了如何生成证书并使用证书,但似乎并没有提供关于证书颁发机构设置的许多信息。 例如,我可以使用中间CA签署密钥,并让服务器信任父CA?

这个关于新function的评论似乎意味着我可以将我的服务器设置为信任CA,然后设置签名密钥的方法,然后用户不必在服务器上发布各自的密钥。 这似乎也支持关键到期,这是很好的,因为摆脱旧/无效的键是更难的,那么应该是。 但是我希望find更多关于描述完成这个工作所需的总configurationCA,SSH服务器和SSH客户端设置的文档。

事实上,这些文档看起来相当稀疏。 该PROTOCOL.certkeys文件可能是您最好的地方去低级文件重新:这个function。

重新:使用中级CA的,看看这个报价从该文档:

不支持“链接”证书,其中签名密钥types是证书types本身。

如果我正在阅读,那么使用中间CA是明确不可能的。 总的来说,看起来这是一个非常简单的PKI实现,你应该把X.509 PKI世界中的大部分内容抛出去。

有趣的东西。

包含在OpenSSH源代码中的文件regress / cert-hostkey.sh和regress / cert-userkey.sh似乎提供了一个相当不错的概述,即该function涵盖了用CAvalidation和授权用户/主机的方式。

至于用户需要发布的密钥:从我收集的信息来看,只要用户提供的证书是正确签名的,并且对证书的限制不禁止用户访问该机器,他将被允许login。 没有需要发布。

我已经发布了如何在ServerFault上生成和使用ssh证书。

简而言之:

  1. 生成ca_key(就像正常的rsa或dsa键)
  2. 使用ca_key生成主机证书
  3. 在目标主机上安装主机证书,configurationsshd以适应
  4. 使用ca_key生成客户端证书(产生的证书可以有几个约束,比如强制命令,无代理转发,no-x11转发等等,以及年龄限制)。 客户端证书可以是一个或多个主机,也可以是一个或多个用户。

我得到的问题是如何撤销SSH证书。 不得不改变主机证书清楚地避免了拥有中央CA和主机证书的价值。