我希望能够使用 Gemalto .NET 智能卡作为身份验证方法通过 SSH 连接到我的计算机。如何在 Fedora 13(或通用 Red Hat 风格)机器上完成此操作?
这些是我认为需要的粗略步骤:
- 为智能卡提供证书(可能还有 CA 来颁发它?)
- 将证书写入智能卡
- 配置 SSH 服务器以允许智能卡身份验证并将其配置为使用特定证书/CA
- 具有智能卡支持的 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
我在自己的服务器上有一个副本,但目前我在这个堆栈跟踪上还不够受欢迎,无法与您分享。上面的内容仅比我们自己的服务器可靠性稍低,因此您可能可以从他们那里获取它;)
[编辑]我现在已经足够受欢迎了!
答案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。