【发布时间】:2014-06-15 06:37:04
【问题描述】:
我目前正在执行 AS/2 实施(我的第一个 BizTalk 项目),并且遇到了证书问题。我检查了许多网站、博客、MSDN,但直到现在,我都无法正常工作。
这是场景: 我需要收到来自特定合作伙伴的 AS/2 加密消息。
我是这样测试的: - 我的本地计算机和服务器都运行 BizTalk 2013。 - 我使用 OpenSSL 生成了 1 个证书(DES3 2048 位)。
证书安装如下:
发送机器:本地计算机\其他人(我的 CER 文件)。 发送机器:本地计算机\受信任的根证书颁发机构(我的 CER 文件)- 使证书受信任。 接收机器:当前用户\个人存储(我的 PFX 文件)- 注意:当前用户是运行 BizTalk 的进程内主机实例的用户。 接收机器:当前用户\个人存储(我的 PFX 文件)- 使证书受信任。 - 注意:当前用户是运行 BizTalk 的进程内主机实例的用户。
在 IIS 中,运行 BTSHttpReceive.dll 的应用程序池在 ApplicationPoolIdentity 下运行。
最后,这里是 BizTalk 配置:
(发送方):
- 发送端口 -> 证书:接收合作伙伴证书 (CER)。
-
Pary 协议(发送方 -> 接收方)-> 验证:“选择了应该加密的消息”并且加密算法设置为 DES3。
(接收伙伴):
主机 (BizTalkServerApplication) -> 证书:我的证书 (PFX)。
- 当事人协议(Sendingp partner -> Receing partner)-> Validation: "Message should be encrypted is selected" 并且加密算法设置为 DES3。
当我尝试将消息从发送计算机发送到接收计算机(只是一个包含一行的文本文件)时,接收计算机在 BizTalk 事件查看器中生成两个错误:
错误信息 1:
AS2 解码器在处理过程中遇到异常。消息和异常的详细信息如下: AS2-From:"AS2-xxx" AS2-To:"AS2-xxx" MessageID:"" MessageType: "unknown" 异常:"解密AS2消息时出错。"
错误信息 2:
适配器“HTTP”在接收位置“xxx”上接收到的消息被挂起,URI 为“/BTSHttpReceive.dll”。
错误详细信息:接收管道中组件“Microsoft.BizTalk.EdiInt.PipelineComponents”的输出消息“Microsoft.BizTalk.EdiInt.DefaultPipelines.AS2Receive,Microsoft.BizTalk.Edi.EdiIntPipelines,版本=3.0.1.0,文化=中性,由于以下错误,PublicKeyToken=31bf3856ad364e35" 被暂停:
解密 AS2 消息时出错。
挂起消息的序号为2。
消息 ID:{BFE72958-E968-4FF6-B7DA-EB31340D81F6}
实例 ID:{B2B08761-4403-44AE-A788-D487F94CC270}
这是我已经检查过的内容:
我看到的序列号或证书可能会导致问题:
发送计算机证书序列号:00 8a 42 09 ee af c2 29 b1 接收计算机证书序列号:00 8a 42 09 ee af c2 29 b1
我希望有人能指出我正确的方向,因为我在这个问题上搜索了几天。
亲切的问候,
【问题讨论】:
-
您使用的是哪个版本的 BizTalk?
-
在 BizTalk 中各方之间的协议上,在验证下的传入协议选项卡上,我检查了:“使用协议设置进行验证和 MDN 而不是邮件标头。”和“消息应该加密”。我的加密/解密证书已存储在 2 个位置(其他存储或个人存储取决于功能,然后存储在受信任的根证书颁发机构中,因为默认情况下不信任该证书)。
-
这个问题已经用我目前知道的一些数据进行了更新。我希望这听起来很熟悉。
-
我正在使用 BizTalk 2013。
-
在处理 AS2 问题时,尤其是在同时控制发送方和接收方时,我经常尝试首先使其工作而不启用任何签名和加密。这样,我确定这不会引起任何问题。你已经试过了吗?在此基础上,如有必要,我们可以进一步解决问题。
标签: ssl encryption biztalk