使用PKCS#11 HSM验证SSL Web请求

时间:2013-01-09 22:40:48

标签: ssl webrequest pkcs#11

我正在尝试向我写的网站发出网页请求,要求客户提供证书进行身份验证。

具体来说,我正在尝试编写一个可以发出Web请求的C#(或Visual C ++)应用程序,但是在我的HSM上使用证书和私钥。

我意识到这里有一个类似的问题,但它没有得到我需要的答案。

我已经可以了:

  • P /调用我的原生pkcs#11库(DLL),登录,在HSM上查找/创建对象
  • 使用pkcs#11界面,我可以阅读HSM上的X509证书

我不能:

  • 从HSM导出私钥。它不可出口。

所以我需要的是一种从我的应用程序发出Web请求的方法,并说:“对于握手,请在我的HSM上使用X509和私钥对象。”

请不要建议我“检查”像NCryptoki,Bouncy Castle等的东西 - 我已经可以使用它们制作我的Windows应用程序了。与HSM沟通。我需要的是如何制作Windows应用程序。在HSM上的凭据的上下文中发出Web请求。

1 个答案:

答案 0 :(得分:0)

当您通过pkcs#11本机电话获得证书时,您没有附加私钥。私钥进行解密,所以我们需要它。要解决这个问题,你有两个选择:

  1. 在安装过程中,几乎所有设备都会注册加密服务提供商。例如,您可以在该提供程序上包装RSACryptoServiceProvider并将其分配给证书的PrivateKey属性。

  2. 某些设备驱动程序会将HSM中的证书与个人证书存储区同步。如果从Windows存储中选择证书,它将自动附加加密服务提供程序。所以失踪的私钥问题就消失了。您只需将证书添加到ClientCertificates集合。

  3. 你可以想象我会推荐第二种选择。