我正在尝试使用私钥对信息进行数字签名。我知道如何在.Net的桌面客户端应用程序中执行此操作,但我不知道如何在ASP.Net中执行此操作。它将在使用IE8的Intranet上使用。如果是通过ASP.Net完成的,我猜测当用户在访问站点时键入其证书passowrd(https,双向SSL)时,私钥不会发送到服务器,但我不确定。如果无法访问服务器上的客户端私钥,那么如何在浏览器中签名呢?我可以使用javascript吗?
编辑:我想首先要知道的是,如果这可以在服务器上完成,还是必须在客户端完成?
答案 0 :(得分:3)
client-cert的私钥不会传输到服务器。
如果你真的想要/需要用client-cert签名那么你需要一个客户端组件... AFAIK这是不可能的javascript ...有使用Flash,Silverlight,Java Applets的解决方案做你要求的ASP.NET页面的一部分...
纯粹在服务器端执行此操作是破坏安全性(关于客户端证书)恕我直言的明确信号。
答案 1 :(得分:0)
对于不支持Flash,Silverlight或Java Applet的现代浏览器,可以使用浏览器扩展使用JavaScript从浏览器进行签名。
您的问题:
编辑:我想首先了解一下这是可以在服务器上完成还是必须在客户端上完成?
答案: 要签名的全部内容。 PDF,数据文件或XML保留在服务器上,并且仅将内容的哈希发送到客户端的浏览器以使用客户端的数字签名进行签名,然后将签名的内容发送回服务器。
请根据您需要签名的内容,参阅以下SO答案: