如何设置智能卡 SSH 身份验证?

如何设置智能卡 SSH 身份验证?

我希望能够使用 Gemalto .NET 智能卡作为身份验证方法通过 SSH 连接到我的计算机。如何在 Fedora 13(或通用 Red Hat 风格)机器上完成此操作?

这些是我认为需要的粗略步骤:

  1. 为智能卡提供证书(可能还有 CA 来颁发它?)
  2. 将证书写入智能卡
  3. 配置 SSH 服务器以允许智能卡身份验证并将其配置为使用特定证书/CA
  4. 具有智能卡支持的 SSH 客户端(基于 Windows 的免费客户端可加分)

答案1

我相信金雅拓驱动程序现在是开源的。他们的网站上有源代码。

您将需要配置该pam模块(我不知道如何执行此操作,但代码肯定在那里)。我想pam配置需要将证书原则映射到本地用户 ID。

我相信 GDM 现在支持智能卡,但我不确定它如何检测它。我稍后会尝试查找(最简单的方法可能就是查看gdm源代码)。

当然,这一切都需要pcscd安装libpcsclite。您还需要将其复制libgtop11dotnet.so/usr/lib.

编译 libgtop11dotnet.so 的源代码:https://github.com/AbigailBuccaneer/libgtop11dotnet

答案2

我推荐 kerberos。 MIT 生产 krb5 客户端和服务器。

vwduder,您能推荐一个智能卡读卡器和 FIPS-201 兼容卡的来源吗?

http://csrc.nist.gov/publications/fips/fips201-1/FIPS-201-1-chng1.pdf

我在自己的服务器上有一个副本,但目前我在这个堆栈跟踪上还不够受欢迎,无法与您分享。上面的内容仅比我们自己的服务器可靠性稍低,因此您可能可以从他们那里获取它;)

[编辑]我现在已经足够受欢迎了!

http://www.colliertech.org/state/FIPS-201-1-chng1.pdf

答案3

使用 RSA 密钥时,1) 和 2) 是微不足道的,因为正如我们将在 3) 中看到的,实际证书在此上下文中无关紧要。只需前往 cacert.org 或生成自签名证书即可。

对于 3),您需要提取公钥并将其安装在 $HOME/.ssh/authorized_keys 中。注意文件所有权和权限! (.ssh 为 700,authorized_keys 为 600)。不鼓励使用主机范围的公钥身份验证,但将其作为好奇心的练习。

至于4)你应该看看PuTTY SC(http://www.joebar.ch/puttysc/) 或 - 最好是 - PuTTY-CAC (http://www.risacher.org/putty-cac/)它在 PuTTY SC 的基础上进行了改进,提供了更好的公钥提取算法,并且还包括来自 PuTTY 开发分支的 Kerberos-GSSAPI 支持。

答案4

我制作了一个视频来展示如何使用 PuttySC 和 Linux 服务器来使用智能卡安全CRT。您可以在这里观看:如何使用智能卡进行 SSH

我不会解释如何在卡中配置证书,但如果您这样做,请记住应使用卡管理系统更改卡的管理密钥。如果您的公司为您提供智能卡,那么您就可以轻松很多,这样您就不必担心这部分。

配置好卡后,您需要提取公钥,然后将其添加到 ~/.sshd/authorized_key 中。

要连接服务器,可以使用PuttySC或SecureCRT等工具。您需要获取该卡的 PSKC#11 库(从智能卡制造商处或开源版本)。使用库配置 SSH 工具,它应该能够读取它并找到证书。

当您进行身份验证时,该工具将提示您输入智能卡 PIN。

相关内容