【发布时间】:2013-12-13 17:42:27
【问题描述】:
我正在尝试在一台计算机上签署 XML,然后在另一台计算机上验证该 XML。我看到有人问过这个问题(Signed and Verify xml file in C#),但提问者不清楚,也没有找到答案。
我使用此处找到的示例对 XML 文件进行签名和验证: http://msdn.microsoft.com/en-us/library/ms229745(v=vs.110).aspx
如果我在同一台计算机上同时运行签名和验证,则验证有效。但是当我尝试在另一台计算机上验证时它失败了。
在签署文件之前,我创建了这样的密钥容器:
aspnet_iisreg -pc "MY_KEY_CONTAINER" -exp
我对 XML 进行签名,然后导出密钥(注意这里我没有使用 -pri 导出私钥):
aspnet_iisreg -ps "MY_KEY_CONTAINER" "D:\\MY_KEY_CONTAINER.xml"
然后在另一台电脑上导入密钥:
aspnet_iisreg -pi "MY_KEY_CONTAINER" "D:\\MY_KEY_CONTAINER.xml"
然后,在第二台计算机上,我运行与第一台计算机相同的验证应用程序。但是,在第二台计算机上验证失败。两台机器上的设置是一样的。两者都运行相同的 .net 版本。
我想确认我描述的过程应该有效。如果我的代码没有问题,我上面描述的密钥交换过程是否有效?
编辑:我开始将密钥打印到屏幕上,并意识到即使我删除旧密钥并创建一个新密钥,应用程序中的密钥也不会改变。似乎有两个不同的密钥容器,即使它们具有相同的名称。我的应用程序正在访问一个密钥容器,而当我运行 aspnet_iisreg 命令时正在使用另一个密钥容器。它是否正确?这是什么原因造成的,我可以解决吗?
【问题讨论】:
标签: c# .net xml xml-signature