我有一个Intranet Web应用程序,我需要在服务器端签署PDF文档。签名者必须是当前从给定网页发出签名命令的最终用户,并且他的数字签名/证书位于他的智能卡中。
根据我收集的信息,当用户将智能卡插入阅读器时,信息将填充到Windows密钥库。我对吗?所以我需要做的是以某种方式从Internet Explorer中读取Windows证书存储区中的信息。我知道javascript无法获得该信息。我也知道java可以做到,但如果我可以避免使用java applet,我会的。
有什么想法吗?
答案 0 :(得分:2)
如果要签署文档,浏览器必须将包含私钥的证书发送到服务器。如果您可以通过浏览器访问Windows证书存储区,那将是一个严重的安全问题,因为攻击者可以读取所有证书私钥。
我根据你所描述的基本想法建议的另一件事
构建一个安全的身份验证系统,用户可以使用表单或Windows身份验证登录Intranet应用程序。
为服务器端的每个用户保留证书。如果用户随后使用用户证书上传PDF,请将其下载。
请考虑使用本地应用
如果用户在本地拥有SmartCard,为什么不让本地应用程序签署PDF?看到你在本地得到了你所需要的一切。为什么要把它推到服务器端?
答案 1 :(得分:0)
签名的频率是多少?也许考虑使用Java Web Start应用程序(根据您的安全策略进行折衷)进行签名?
答案 2 :(得分:0)
您是否看过ASSP提供的可能性? 值得一试。