智能卡如何用于客户端证书身份验证?
Posted
技术标签:
【中文标题】智能卡如何用于客户端证书身份验证?【英文标题】:How do smart cards work for client certificate authentication? 【发布时间】:2013-07-17 10:32:40 【问题描述】:我正在尝试了解客户端证书身份验证如何与智能卡一起使用。
我已阅读有关配置 Apache 以使用证书对用户进行身份验证的信息。网上有很多教程,比如LinuxConfig的APACHE web server and SSL authentication。
据我了解,一旦导入证书,任何可以访问计算机的人都可以启动浏览器并使用它。因此,在多个用户共享同一个帐户(或攻击者对计算机具有物理访问权限并能够登录)的情况下,无法明确地对用户进行身份验证。为了避免这样的问题,当一个帐户被共享时,我可以尝试不在浏览器中存储证书。
现在有几个 USB 令牌可以在内部包含证书,可用于对网站执行客户端证书身份验证。以下是我对此类设备的疑问:
通过将证书作为物理设备导入,浏览器是否允许我在导入时使用证书? 如果证书有 PIN 会怎样?浏览器是否在每次启动时都要求输入 PIN? 我可以确定不能从令牌/智能卡读卡器中提取证书吗?因此,除非令牌被盗,否则我能确定证书不能被克隆吗?【问题讨论】:
澄清一下:证书是公钥,可能还有一些附加属性和覆盖这些数据的签名。所以这里没有什么是秘密的,复制也没有害处。秘密是相应的私钥,安全性来自于应用私钥(通常取决于 PIN 条目),以使用证书中的公钥进行验证。智能卡的主要目的之一是保护私钥免遭未经授权的使用,更不用说提取了。 【参考方案1】:通过将证书作为物理设备导入,浏览器将 让我在导入时使用证书吗?
是的。但是,与软件令牌相比,使用硬件令牌时您可能会发现延迟更高(例如,对于智能卡 2-3 秒)。
如果证书有密码会发生什么?浏览器是否要求 每次启动时的引脚?
默认情况下,例如如果您连接到启用了 HTTPS 客户端身份验证的网页,Firefox 只会尝试访问客户端证书。然后将要求输入 PIN。 通常,只要不删除令牌,就不再需要 PIN,但根据使用的 PKCS#11 模块(将 Firefox 与令牌连接的软件),该行为可能会有所不同。
我可以确定证书不能从 令牌/智能卡读卡器?因此,除非令牌被盗,否则我可以 确定证书不能被克隆?
然后取决于令牌。有些可能有用于提取私钥的 API,但通常您只能从令牌中使用或删除私钥 + 证书。
【讨论】:
以上是关于智能卡如何用于客户端证书身份验证?的主要内容,如果未能解决你的问题,请参考以下文章
DotNet Core:如何跨平台客户端证书 TLS 身份验证?
如何获取用于在我的 Rust Tonic 服务中进行身份验证的客户端证书?
使用 Swift 4 和 Alamofire 获取客户端证书以用于 Https 调用身份验证