由于一个斯堪的纳维亚国家的法律要求,我们正在为一个网站创建一个三因素认证。客户正在使用NetID品牌浏览器插件在浏览器中执行PKCS #11证书身份验证。智能卡由客户上的合作伙伴集中提供。
这个主题没有太多的在线资源或教程可用.有人会有指向示例实现或教程如何在web浏览器中进行PKCS11身份验证的指针吗?
编辑:有关SSL客户端证书的发现
身份验证方法看起来像是SSL客户端Certificate
上进行测试。
http://www.garex.net/apache/
http://www.impetus.us/~rjmooney/projects/misc/clientcertauth.html
发布于 2012-01-09 18:06:38
不要用JavaScript来做。JavaScript cryptography has a number of problems,而且我认为很多浏览器不会让您从JavaScript (从页面内运行)直接访问PKCS#11。
许多浏览器支持PKCS#11进行HTTPS身份验证,即使用PKCS#11进行客户端证书身份验证,作为SSL/TLS连接的一部分(作为HTTPS的一部分)。
假设您已经有了一个PKCS#11库(假设OpenSC在/usr/lib/opensc.so中是可用的),您可以配置火狐来使用它:
/usr/lib/opensc.so文件(或在您的示例中适当的PKCS#11模块)。然后,当您连接到请求客户端证书的网站时,浏览器应该允许您从启用PKCS#11的设备中选择证书。
PKCS#11配置机制因浏览器而异,但通常需要设置PKCS#11模块的路径。
据我所知,Internet不使用PKCS#11 (至少没有额外的支持),而是应该依赖MS CryptoAPI和InfoCards。
在服务器端,您将需要配置客户端证书身份验证的要求。没有特定于PKCS#11的地方。
编辑之后,您应该阅读有关证书颁发机构(CA)和公钥基础设施(PKI)的信息。您可以部署您自己的内部PKI,但听起来您的需求是与现有的PKI集成。这主要是一个管理问题,因此,请与提出此要求的人进行检查,查看他们希望依赖哪个CA (可能是他们的CA)。
当使用客户端证书身份验证时,客户端将显示其证书(其中包含用户的公钥和其他属性,包括标识符: Subject Distinguished ),SSL/TLS握手将确保客户端拥有此公钥证书的私钥。然后,服务器根据它信任的CA验证此证书(这也是服务器端的SSL设置)。
一旦您配置了想要信任的CA,如果需要的话,通常使用证书的Subject DN到内部用户名进行映射。这方面没有硬性规定,因为这取决于您的内部用户命名方案。尽管如此,使用完整的Subject DN作为用户名通常是明智的。
发布于 2014-09-04 15:48:24
目前,您不能在浏览器进程中执行PKCS#11。所有合适的本地技术要么正在消亡(NPAPI),要么没有通过所有浏览器实现。您需要在浏览器之外执行此操作,并创建一些相互连接的通信。
发布于 2013-10-19 15:12:30
现在你可以这么做了。使用PKCS#11智能卡或令牌的网络身份验证可以通过使用Silverlight版本的NCryptoki来实现。请参阅http://www.ncryptoki.com
你有两段经文:
1)使用Silverlight版本的NCryptoki并开发自己的Silverlight用户控件,使用智能卡提供的PKCS#11函数实现您的身份验证协议
2)使用基于上述Silverlight版本的JQuery插件,在JavaScript中通过调用JavaScript中的PKCS#11函数来实现认证协议。
https://stackoverflow.com/questions/8792899
复制相似问题