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

标签 c# web-services encryption x509 wse

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

我们有两个不同的第三方证书

  1. 试生产证书
  2. 生产证书

我们已经实现了一个 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/

相关文章:

c# - a 有什么作用?在新的 Type?[5] 作业中做什么?

c# - 使用 ASP.NET Core Entity Framework 在数据层中进行数据加密

java - 用于 IIS 集成 Windows 身份验证 (NTLM) 的 JAX-WS 客户端

web-services - 德尔福HTTPRIO : any way to disable certificate prompt?

database - sqlcipher如何导入一个sqlite3数据库

python - 将一些 C 函数转换为 Python

c# - System.Data.Entity.Infrastructure.CommitFailedException : C# Multithreading & SQL Server 2012

android - 安卓电子商务

java - TEA算法java实现和32位无符号位问题

c# - 我如何在 C# 中释放对象