将signedCms与智能卡证书一起使用时出错

时间:2015-03-04 15:41:43

标签: c# asp.net iis digital-certificate

我正在将用户存储中的智能卡证书发送到CmsSigner的构造函数中,以使用智能卡对PKCS加密进行签名。 我得到一个错误说“提供商无法执行操作,因为上下文被获取为无声。”在IIS 7.5中的Web应用程序中。 这是正常工作IIS 6.0与模拟。 我在IIS 7.5中使用了Impersonation但结果是相同的。

这适用于同一台机器上的Windows表单应用程序和相同的e-Tocken。我正在使用Aladin E-token。

ContentInfo contentInfo = new ContentInfo(msg);
SignedCms signedCms = new SignedCms(contentInfo, false);

CmsSigner cmsSigner = new CmsSigner(signerCert);

cmsSigner.SignedAttributes.Add(new Pkcs9SigningTime());  
signedCms.ComputeSignature(cmsSigner);

在Google之后我发现了同样的问题Here 。 但是没有回答。

任何帮助将不胜感激。

提前致谢

2 个答案:

答案 0 :(得分:4)

当我尝试使用智能卡对数据进行签名时,我遇到了同样的错误,此卡受到了PIN的保护。

而不是

 <field name="courseid" type="string" indexed="true" stored="true" required="true" multiValued="false" />   
   <field name="coursetitle" type="string" indexed="true" stored="true" multiValued="false"/>    
   <field name="durationinseconds" type="int" indexed="true" stored="true" />   
   <field name="releasedate" type="date" indexed="true" stored="true"/>

我用过

signedCms.ComputeSignature(cmsSigner);

调用此方法后,会显示PIN的提示窗口。我写了PIN并签名成功。

答案 1 :(得分:0)

我的问题是没有给出适当的权利,因此我将应用程序池的更改身份从ApplicationPoolIdentity更改为IIS服务器中的LocalService帐户,一切正常。