【问题标题】:AS2 Server - Receiving AS2 messages with (modern) C# .NETAS2 服务器 - 使用(现代)C# .NET 接收 AS2 消息
【发布时间】:2022-08-03 16:51:29
【问题描述】:

有没有人有任何实现 AS2 服务器以在 C# 和 .NET Core+ 中接收和解密 AS2 消息的经验?

我知道可以使用 Biztalk 或 Azure Logic Apps,但正在寻找一种在 C# 代码中实现它的方法。在网上找不到很多关于此的内容。除了 AS2 过时之外,这是出于任何特殊原因吗?

具体来说,我需要;

  • 通过 Https 接收 AS2 消息

  • 验证签名

  • 解密消息并提取 XML 内容

  • 发回 MDN

由于缺乏示例并不确定从哪里开始,因此任何示例或指向正确方向的示例和证书要求将不胜感激。

编辑:找到了下面答案提供的相同链接,以及同一博客上文章的消息发送部分,但这不包括 MDN 和签名验证,有人有这些部分的代码示例吗?

    标签: c# asp.net-core https protocols edi


    【解决方案1】:

    实际上在 net core 中实现一个 As2 端点并不难。我从https://mattfrear.com/2011/01/03/receiving-as2-messages-with-net/开始,慢慢发现Mimekit几乎可以完成你上面提到的所有任务。 要完全理解 As2 通信的工作原理,您必须通读大量 rfc,这是唯一困难的部分。在你有了一个想法之后,将它们放在代码中很容易。

    【讨论】:

    • 除了 AS2 rfc4130 你还读了哪些?你有可以分享的例子吗?
    • 我阅读了与 Mdn 和其他相关的那些,现在不记得哪些有用,哪些没有。虽然你说要处理传入的消息,但你还是要回复一个 Mdn,这也是一个 as2 消息。因此,我将开始实现发送部分,您可以使用 mendelson 测试服务器对其进行测试。之后,您可以测试接收发送给自己的消息。 as2 消息只是具有 as2 特定标头的 mime multipart,您使用 HttpContent 子类创建:MultiPartContent、ByteArrayContent ...
    【解决方案2】:

    我过去进行了广泛的搜索,但没有找到任何可行的方法。解决方案的关键是能够生成加密的多部分信封。我在 BCL 中没有找到任何明确支持这一点的内容。

    另一方面,我能够在 PowerShell 中创建一个测试工具发送AS2 消息使用 OpenSSL for Windows 生成加密和签名的信封。遗憾的是,这是我无法分享的商业代码,但该过程的概要是:

    • openssl smime -sign -in <raw content file path> -out <signed content file path> -signer <private key certificate path>
    • openssl smime -encrypt -outform DER -in <signed content file path> -out <encrypted content file path> -des3 <public key certificate path>
    • 通过HTTP POST发送加密文件的内容

    我没有将其概括为接收消息,但大概 openssl 支持反向运行相同的操作。

    我参考了this question 以获取有关如何实现此目的的指示。我的回答提到了从 Windows/Azure 证书约定转换为 OpenSSL/*nix 约定的一些复杂性。

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 2014-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-08
      • 2020-09-11
      相关资源
      最近更新 更多