如何在Web应用程序中使用USB令牌签名PDF

本文关键字:令牌 USB PDF Web 应用程序 | 更新日期: 2023-09-27 18:09:23

当用户在asp.net Web应用程序中使用客户端机器中的USB令牌上传文件时,我想签名PDF。

我遵循早期的SO Post Sign PDF与iTextSharp 5.3.3和USB令牌

它工作得很好,当我在本地做时,当我将它发布到Web服务器时,它给出了当前会话不是交互式的

堆栈跟踪:

[InvalidOperationException: current session is not interactive.]

System.Security.Cryptography.CAPI.CryptUIDlgSelectCertificateW (CRYPTUI_SELECTCERTIFICATE_STRUCTWcsc) + 345679
System.Security.Cryptography.X509Certificates.X509Certificate2UI.SelectFromStore (SafeCertStoreHandlesafeSourceStoreHandle,字符串标题,字符串消息,X509SelectionFlagselectionFlags, IntPtr hwndParent) +314
System.Security.Cryptography.X509Certificates.X509Certificate2UI.SelectFromCollectionHelper (X509Certificate2Collection证书,字符串标题,字符串消息,X509SelectionFlagselectionFlag, IntPtr hwndParent) +176
System.Security.Cryptography.X509Certificates.X509Certificate2UI.SelectFromCollection (X509Certificate2Collection证书,字符串标题,字符串消息,X509SelectionFlagselectionFlag) +17 test.WebForm1Upload_Click(对象发送者,EventArgs e) in e:'manishtest'test'test'WebForm1.aspx.cs:74
System.Web.UI.WebControls.Button。OnClick(EventArgs e) +138
System.Web.UI.WebControls.Button.RaisePostBackEvent(字符串+150 System.Web.UI.Page.ProcessRequestMain(布尔值)包括destagesbeforeasyncpoint,布尔值包括destagesafterasyncpoint+ 6047

我第一次做PDF的数字签名。请建议在上传时如何在web应用程序中签名PDF

如何在Web应用程序中使用USB令牌签名PDF

似乎是这一行引起了问题:

System.Security.Cryptography.X509Certificates.X509Certificate2UI.SelectFromCollectionHelper(X509Certificate2Collection certificates, String title, String message, X509SelectionFlag selectionFlag, IntPtr hwndParent)

显示UI选择证书。因此,您需要找到另一种方法来获得证书以使其工作。

您可以尝试在问题的答案中引用代码,使用证书文件而不是文件来选择证书。

X509Certificate2 cert = new X509Certificate2("C:''mycert.p12");

编辑:正如@Bruno Lowagie所评论的那样,通过u盘签名意味着它是由u盘上的软件完成的,而不是将私钥发送到任何地方。他的第二个评论更详细地说明了如何实现这一点。但是得到那个错误还是一样的。服务器上运行的代码无法打开客户端系统上选择证书的对话框