AS2 服务器 - 使用(现代)C# .NET 接收 AS2 消息

问题描述 投票:0回答:3

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

我知道可以使用 Biztalk 或 Azure 逻辑应用程序,但正在寻找一种在 C# 代码中实现此功能的方法。在网上找不到很多这方面的资料。除了 AS2 太旧之外,这还有什么特殊原因吗?

具体来说,我需要;

  • 通过 Https 接收 AS2 消息

  • 验证签名

  • 解密消息并提取 XML 内容

  • 发回 MDN

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

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

c# asp.net-core https protocols edi
3个回答
1
投票

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


0
投票

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

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

  • 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 支持反向运行相同的操作。

我提到了

这个问题以获取有关如何实现这一目标的指导。我的回答提到了从 Windows/Azure 证书约定转换为 OpenSSL/*nix 约定的一些复杂性。


0
投票
Azure Marketplace 中有一个在 .NET Core 6 中创建的 AS2 客户端。它被称为“集成微服务 AS2”,如果 Azure 不适合您,他们还可以为您的本地项目提供自定义解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.