我们有一个批处理程序,可以通过 WSE 与第三方提供商网络服务对话,对 WSE 网络服务的调用使用 x509 证书加密。
我们有两个不同的第三方证书
- 试生产证书
- 生产证书
我们已经实现了一个 WebServiceResponseLogger
继承自 SoapInputFilter
,它作为一个 InputFilter
添加到 Pipeline
.在使用预生产证书时,这可以很好地记录响应。但是,当我们切换到生产并使用生产证书时,不会记录响应。
现在我们已经通过 fiddler 看到了请求和响应,所以我们知道响应确实出现了,问题是我们在 fiddler 中看到的响应是原始响应。
我已经尝试使用谷歌搜索来确定我们是否可以解密 fiddler 中的响应,我们有正确的证书,所以我认为这是可能的。如果不使用 fiddler,是否已经存在允许我解密 soap 响应的工具?
最佳答案
终于抽出时间来发布我找到的解决方案,以防其他人遇到这个问题:)
我设法找到了 link在 MSDN 上,这让我走上了正确的轨道,并构建了以下控制台程序,该程序成功地解密了我从 fiddler session 中获得的响应。
我安装了 WSE 2.0 NuGet 包
try
{
// http://msdn.microsoft.com/en-us/library/aa529137.aspx
XmlDocument response = new XmlDocument();
response.Load("Response.xml");
var encryptedKeyElement = response.GetElementsByTagName("xenc:EncryptedKey")[0] as XmlElement;
var encryptedDataElement = response.GetElementsByTagName("xenc:EncryptedData")[0] as XmlElement;
EncryptedKey encryptedKey = new EncryptedKey(encryptedKeyElement);
EncryptedData data = new EncryptedData(encryptedDataElement, encryptedKey);
var decryptedData = data.Decrypt();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
Console.WriteLine("Press any key to exit");
Console.Read();
}
关于c# - 如何解密用 x509 加密的原始 soap 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20743256/