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

C# 如何解密使用x509加密的原始soap响应,c#,web-services,encryption,x509,wse,C#,Web Services,Encryption,X509,Wse,我们有一个批处理程序,它与第三方提供商使用WSE进行web服务对话,对WSE web服务的调用使用x509证书加密 我们向第三方提供商提供了两种不同的证书 预生产证书 生产证书 我们实现了一个webservicesponselogger,它继承自SoapInputFilter,作为InputFilter添加到管道中。这在使用预生产证书时可以很好地记录响应。但是,当我们切换到生产并使用生产证书时,不会记录响应 现在我们已经通过fiddler看到了请求和响应,所以我们知道响应实际上出现了,问题是我们

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

我们向第三方提供商提供了两种不同的证书

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

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


    我试着用谷歌搜索,想弄清楚我们是否可以在fiddler中解密响应,我们有正确的证书,所以我想这是可能的。如果不使用fiddler,是否已经存在允许我解密soap响应的工具?

    最终发布了我找到的解决方案,以防其他人遇到此问题:)

    我设法在MSDN上找到了一个正确的方法,并构建了以下控制台程序,成功地解密了我在fiddler会话中得到的响应

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

    我不认为你会找到这样的工具,因为这将有助于中间人攻击,即使你有证书。也许你能更好地解释你的问题。您所说的“它不是日志记录”是什么意思。我们有一个记录请求和响应的inputfilter,envolope.OuterXML属性存储在本地数据库中,用于请求和响应,但存储在响应中的数据为空,当我们使用生产证书时,似乎从未真正命中inputfilter。如此令人沮丧的是,msdn没有给出示例。