1

我有一个 Intranet Web 应用程序,我需要在其中签署位于服务器端的 PDF 文档。签名者必须是当前从给定网页发出签名命令的最终用户,并且他的数字签名/证书位于他的智能卡中。

根据我收集到的信息,当用户将他的智能卡插入读卡器时,信息会填充到 Windows Key Store。我对吗?所以我需要做的是从 Internet Explorer 以某种方式从 Windows 证书存储中读取该信息。我知道 javascript 无法获取该信息。我也知道 java 可以做到,但如果我可以避免使用 java applet,我会的。

有任何想法吗?

4

3 回答 3

2

它不可能这样做。

如果要签署文档,浏览器必须向服务器发送包含私钥的证书。如果您可以通过浏览器访问 Windows 证书存储,那将是一个严重的安全问题,因为攻击者可以读取所有证书私钥。

根据您所描述的基本思想,我建议的另一件事

建立一个安全的身份验证系统,用户可以使用表单或 Windows 身份验证登录到 Intranet 应用程序。

在服务器端为每个用户持有一个证书。如果用户随后上传 PDF,则使用用户证书对其进行签名并提供下载。

请考虑拥有一个本地应用程序

如果用户在本地拥有智能卡,为什么不让本地应用程序签署 PDF?看到您在本地拥有所需和想要的一切。为什么要推送到服务器端?

于 2012-12-14T21:07:55.180 回答
0

签名多久发生一次?也许考虑使用 Java Web 启动应用程序(某种妥协 - 取决于您的安全策略)来进行签名?

于 2012-12-13T23:05:22.827 回答
-1

您是否看过 ASSP 提供的可能性?值得一试。

于 2015-08-13T13:17:41.997 回答