如何解密用x509加密的原始soap响应



我们有一个批处理程序,它可以与第三方提供商使用WSE的web服务进行对话,对WSE web服务的调用使用x509证书进行加密。

我们有两个不同的证书给第三方提供商

  1. 预生产证书
  2. 生产证书

我们实现了一个继承自SoapInputFilterWebServiceResponseLogger,它作为InputFilter添加到Pipeline中。当使用预生产证书时,这可以很好地记录响应。但是,当我们切换到生产并使用生产证书时,不会记录响应。

现在我们已经通过fiddler看到了请求和响应,所以我们知道实际上出现了响应,问题是我们在fiddler中看到的响应是原始响应。

我试过在谷歌上搜索,试图弄清楚我们是否可以解密fiddler中的响应,我们有正确的证书,所以我认为这是可能的。如果没有fiddler,是否已经存在允许我解密soap响应的工具?

终于抽出时间发布了我找到的解决方案,以防其他人遇到这个问题:)

我设法在MSDN上找到了一个链接,使我走上了正轨,并构建了以下控制台程序,成功地解密了我从我们的fiddler会话中得到的响应。

我安装了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();
}

最新更新