你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于:Azure 逻辑应用(消耗 + 标准)
本指南介绍如何使用 MQ 连接器从 Azure 逻辑应用中的工作流访问 Azure 托管服务器或本地 MQ 服务器。 然后,你便可以创建自动化工作流来接收和发送存储在 MQ 服务器中的消息。 例如,工作流可以浏览队列中的单条消息,然后运行其他操作。
MQ 连接器为 Microsoft MQ 客户端提供包装器,其中包括通过 TCP/IP 网络与远程 MQ 服务器通信的所有消息传递功能。 此连接器定义了用于调用 MQ 客户端的连接、操作和参数。
支持的 IBM WebSphere MQ 版本
- MQ 7.5
- MQ 8.0
- MQ 9.0、9.1、9.2 和 9.3
连接器技术参考
MQ 连接器有不同的版本,具体取决于逻辑应用类型和主机环境。
| 逻辑应用 | 环境 | 连接版本 |
|---|---|---|
| 消耗 | 多租户 Azure 逻辑应用 | 托管的连接器,该连接器显示在 “共享” 筛选器下的连接器库中。 此连接器仅提供操作,而不提供触发器。 在本地 MQ 服务器方案中,托管连接器支持使用 TLS (SSL) 加密进行仅服务器身份验证。 有关详细信息,请查看以下文档: - MQ 托管连接器参考 - Azure 逻辑应用中的托管连接器 |
| Standard | 单租户 Azure 逻辑应用和应用服务环境 v3(仅限具有 Windows 计划的 ASE v3) | 托管连接器,该连接器显示在 “共享 筛选器”下的连接器库中,内置连接器显示在 内置 筛选器下的连接器库中,并且 是基于服务提供程序的。 内置版本在以下方面有所不同: - 内置版本包括操作和触发器。 - 内置连接器可以直接连接到 MQ 服务器,并通过使用连接字符串访问 Azure 虚拟网络,而无需本地数据网关。 - 内置版本支持对传输中的数据使用 TLS (SSL) 加密进行服务器身份验证和服务器-客户端身份验证,面向发送和接收操作的消息编码,以及 Azure 虚拟网络集成。 有关详细信息,请查看以下文档: - MQ 托管连接器参考 - MQ 内置连接器参考 - Azure 逻辑应用中的内置连接器 |
使用 TLS (SSL) 加密进行身份验证
根据你使用的是 MQ 托管连接器(消耗或标准工作流)还是 MQ 内置连接器(仅限标准工作流),MQ 连接器支持以下一个或同时支持以下两个身份验证方向:
| 身份验证 | 受支持的逻辑应用类型和 MQ 连接器 | 进程 |
|---|---|---|
| 仅限服务器 (单向) |
- 消耗:仅限托管 - 标准:托管或内置 |
对于服务器身份验证,MQ 服务器会将私钥证书(公开信任或非公开信任)发送到逻辑应用客户端来进行验证。 MQ 连接器使用标准 .NET SSL 流验证,根据公钥证书(也称为“签名者”证书)验证传入服务器证书的真实性。 逻辑应用工作流不会发送客户端证书。 |
| 服务器-客户端 (双向) |
- 消耗:不支持 - 标准:仅限内置 |
有关服务器身份验证,请参阅上一行。 对于客户端身份验证,逻辑应用客户端会将私钥证书发送到 MQ 服务器来进行验证。 MQ 服务器还使用公钥证书验证传入的客户端证书是否真实。 |
重要说明
始终保护和保护敏感数据,例如凭据、机密、访问密钥、连接字符串、证书、指纹以及具有最高可用或受支持的安全级别的类似信息。
确保使用 Microsoft Entra ID 和 Azure 密钥保管库安全存储此类信息。 不要硬编码此信息、与其他用户共享或保存在其他人可以访问的任何位置的纯文本中。 设置计划以轮换或撤销机密,以防机密被盗用。 有关详细信息,请参阅以下资源:
有关私钥和公钥证书的说明
需要验证的证书始终是私钥证书。 用于执行验证的证书则始终是公钥证书。
公开信任的私钥证书是由公认的证书颁发机构颁发的。 非公开信任的私钥证书包括自签名证书、私有 CA 证书和类似的证书。
为了验证从 MQ 服务器发送的私钥证书,MQ 连接器使用通常存在于主机受信任根证书颁发机构 (CA) 存储中逻辑应用的主机上的公钥证书。
但如果主机没有所有必需的公钥证书,或 MQ 服务器发送了非公开信任的私钥证书,则需要执行额外的步骤。 有关详细信息,请参阅先决条件。
为了验证从标准逻辑应用发送的客户端私钥证书,MQ 服务器将使用 MQ 服务器的证书存储中存在的公钥证书。 要为逻辑应用添加私钥证书以用作客户端证书,请参阅添加私钥证书。
限制
使用 TLS (SSL) 加密进行身份验证
MQ 连接器 支持的身份验证方向 托管 仅限服务器(单向) 内置 - 服务器-客户端(双向)
- 仅限服务器(单向)服务器证书验证
MQ 内置连接器不会验证服务器证书的过期日期,也不会验证其证书链。
字符集转换
MQ 托管连接器不会进行任何字符集转换,也不会使用消息的“格式”字段。 连接器仅复制消息字段中显示的任何数据并发送消息。
MQ 内置连接器可以进行字符集转换,但仅当数据格式为字符串时才会进行此操作。 如果提供不同的字符集 ID(代码页),连接器会尝试将数据转换为新的代码页。
MQ 连接器不支持分段消息。
有关详细信息,请参阅 MQ 托管连接器参考或 MQ 内置连接器参考。
Prerequisites
Azure 帐户和订阅。 如果没有 Azure 订阅,请注册一个免费 Azure 帐户。
要与本地 MQ 服务器连接,必须在网络内的服务器上安装本地数据网关。 若要使 MQ 连接器正常工作,采用本地数据网关的服务器还必须安装 .NET Framework 4.6。
安装网关后,还必须在 Azure 中创建数据网关资源。 MQ 连接器会使用此资源访问 MQ 服务器。 有关详细信息,请查看设置数据网关连接。
注意
下列情况无需网关:
- MQ 服务器公开可用或在 Azure 中可用。
- 你将使用 MQ 内置连接器,而不使用托管连接器。
要在其中访问 MQ 服务器的逻辑应用资源和工作流。
要将 MQ 托管连接器与本地数据网关配合使用,逻辑应用资源必须使用与 Azure 中的网关资源相同的位置。
要使用不提供任何触发器的 MQ 托管连接器,请确保工作流以触发器开头或首先向工作流添加触发器。 例如,可以使用定期触发器。
要使用 MQ 内置连接器中的触发器,请确保从空白工作流开始。
使用 TLS (SSL) 加密进行身份验证的证书要求
MQ 托管连接器
MQ 服务器 要求 Azure 托管的 MQ 服务器 MQ 服务器必须将由受信任证书颁发机构颁发的私钥证书发送到逻辑应用客户端来进行验证。 使用本地数据网关的本地 MQ 服务器 要发送非公开信任的私钥证书(如自签名证书或私有 CA 证书),必须使用本地数据网关安装将证书添加到本地计算机上的受信任根证书颁发机构 (CA) 存储。 对于此任务,可以使用 Windows 证书管理器 (certmgr.exe)。 MQ 内置连接器
标准逻辑应用使用 Azure 应用服务作为主机平台并处理证书。 对于任何 WS* 计划上的标准逻辑应用,可以将公共、专用、自定义或自签名证书添加到本地计算机证书存储。 但是,如果必须将证书添加到运行标准逻辑应用的虚拟机主机上的受信任根 CA 存储,则应用服务要求逻辑应用在采用仅限 Windows 和基于 ASE 的应用服务计划的隔离应用服务环境 v3 (ASE) 中运行。 有关详细信息,请参阅证书和应用服务环境。
MQ 服务器身份验证
下表基于你的方案介绍了证书先决条件:
传入 MQ 服务器证书 要求 由受信任的证书颁发机构颁发的公开受信任的私钥证书 逻辑应用通常不需要任何其他设置,因为逻辑应用的主机通常具有验证传入 MQ 服务器私钥证书所需的公钥证书。 要检查这些公钥证书是否存在,请按照步骤来查看和确认现有公钥证书的指纹。
如果主机没有验证传入 MQ 服务器私钥证书和任何链接证书所需的所有公钥证书,请完成以下步骤:
1. 使用具有仅限 Windows 和基于 ASE 的应用服务计划的Azure 应用服务环境 v3 (ASE) 重新创建标准逻辑应用。
2. 以手动方式将所需的公钥证书添加到主机的受信任根 CA 存储。非公开信任的私钥证书,例如自签名证书或私有 CA 证书 逻辑应用虚拟机主机的受信任根 CA 存储中没有用于验证 MQ 服务器证书链的所需公钥证书。 在此情况下,请完成下列步骤:
1. 使用具有仅限 Windows 和基于 ASE 的应用服务计划的Azure 应用服务环境 v3 (ASE) 重新创建标准逻辑应用。
2. 以手动方式将所需的公钥证书添加到主机的受信任根 CA 存储。
有关详细信息,请参阅以下文档:
- 证书绑定和应用服务环境
- 在 Azure 应用服务中添加和管理 TLS/SSL 证书逻辑应用客户端身份验证
可以添加私钥证书来作为客户端证书发送,然后在 MQ 内置连接器的连接详细信息中指定证书的指纹值。 有关详细信息,请参阅添加私钥证书。
建议:升级到 MQ Server 9.0 或更高版本。 此外,在 MQ 服务器上,请确保使用与客户端连接使用的密码规范匹配的密码套件(例如 ANY_TLS12_OR_HIGHER)来设置服务器连接通道。 有关详细信息,请参阅有关密码要求的下一项。
密码规范要求
MQ 服务器要求为使用 TLS (SSL) 加密的连接定义密码规范。 此密码规范必须与运行 MQ 服务器的操作系统支持、选择和使用的密码套件匹配。 最后,客户端连接使用的密码规范必须与 MQ 服务器上的服务器连接通道上设置的密码套件匹配。
有关详细信息,请参阅连接和身份验证问题。
添加 MQ 触发器(仅限标准逻辑应用)
以下步骤仅适用于标准逻辑应用工作流,此类工作流可以使用 MQ 内置连接器提供的触发器。 MQ 托管连接器不包含任何触发器。
以下步骤使用 Azure 门户,但利用适当的 Azure 逻辑应用扩展,你也可以使用 Visual Studio Code 来创建标准逻辑应用工作流。
在 Azure 门户中,在设计器中打开空白逻辑应用工作流。
按照这些常规步骤添加所需的 MQ 内置触发器。 有关详细信息,请参阅 MQ 内置连接器触发器。
提供对连接进行身份验证所需的信息。 完成操作后,选择“创建”。
出现触发器信息框时,提供触发器所需的信息。
完成后,保存工作流。 在设计器工具栏上,选择“保存”。
添加 MQ 操作
消耗逻辑应用工作流只能使用 MQ 托管连接器。 但是,标准逻辑应用工作流可以使用 MQ 托管连接器和 MQ 内置连接器。 每个版本都有多个操作。 例如,托管连接器和内置连接器版本都可以通过其自己的操作来浏览消息。
托管连接器操作:这些操作在消耗型或标准型逻辑应用工作流中运行。
内置连接器操作:这些操作仅在标准型逻辑应用工作流中运行。
以下步骤使用 Azure 门户,但利用适当的 Azure 逻辑应用扩展,也可使用以下工具来生成逻辑应用工作流:
- 消耗工作流:Visual Studio Code
- 标准工作流:Visual Studio Code
在 Azure 门户中,打开设计器的逻辑应用工作流。
按照以下常规步骤添加所需的 MQ 操作。 有关详细信息,请参阅 MQ 连接器操作。
提供对连接进行身份验证所需的信息。 完成操作后,选择“创建”。
出现操作信息框时,提供操作所需的信息。
完成后,保存工作流。 在设计器工具栏上,选择“保存”。
测试工作流
要检查工作流是否返回所需的结果,请运行工作流,然后查看工作流运行历史记录中的输出。
运行工作流。
消耗工作流:在工作流设计器工具栏上,选择“运行”>“运行”。
标准工作流:在工作流菜单中的“设置”下,选择“运行历史记录”。 在工具栏上选择“运行”>“运行”。
运行完成后,设计器会显示工作流的运行历史记录以及每个步骤的状态。
若要查看每个已运行(未跳过)步骤的输入和输出,请展开或选择该步骤。
若要查看与输入相关的更多详细信息,请选择“显示原始输入”。
若要查看与输出相关的更多详细信息,请选择“显示原始输出”。 如果将“IncludeInfo”设置为“true”,则会包括更多输出。
查看和添加用于使用 TLS (SSL) 加密进行身份验证的证书
以下信息仅适用于使用通过 TLS (SSL) 加密进行仅服务器身份验证或服务器-客户端身份验证的 MQ 内置连接器的标准逻辑应用工作流。
查看和确认现有公钥证书的指纹
若要检查所需公钥证书的指纹是否存在于标准逻辑应用虚拟机主机上的受信任根 CA 存储中,请按照以下步骤从标准逻辑应用的资源菜单运行 cert PowerShell 脚本。
在 Azure 门户中,打开标准逻辑应用资源。 在逻辑应用资源菜单中的“开发工具”下,选择“高级工具”>“转到”。
在 Kudu“调试控制台”菜单中,选择“PowerShell”。
PowerShell 窗口出现后,从 PowerShell 命令提示符运行以下脚本:
dir cert:\localmachine\rootPowerShell 窗口将列出现有指纹和说明,例如:
添加公钥证书
按照以下步骤将公钥证书添加到运行标准逻辑应用的虚拟机主机上的受信任根 CA 存储中。
在 Azure 门户中,打开标准逻辑应用资源。 在逻辑应用资源菜单中的“设置”下,选择“证书”。
选择“公钥证书(.cer)”选项卡,然后选择“添加证书”。
在打开的“添加公钥证书”窗格中,找到并选择要添加的公钥证书文件 (.cer)。 输入一个易记名称来描述该证书。 完成后,选择“添加”。
添加证书后,从“指纹”列复制证书的指纹值。
在逻辑应用资源菜单上,选择“配置”。
在“应用程序设置”选项卡上,选择“新建应用程序设置”。 添加名为 WEBSITE_LOAD_ROOT_CERTIFICATES 的新应用程序设置,并输入之前复制的证书指纹值。 如有多个证书指纹值,请确保用逗号 (,) 分隔每个值。
有关详细信息,请参阅在单租户Azure 逻辑应用中编辑标准逻辑应用的主机和应用设置。
注意
如果指定了私有 CA 证书的指纹,则 MQ 内置连接器不会运行任何证书验证,例如检查证书的过期日期或源。 如果标准 .NET SSL 验证失败,则连接器仅将传入的任何指纹值与 WEBSITE_LOAD_ROOT_CERTIFICATES 设置中的值进行比较。
如果添加的证书未出现在公钥证书列表中,请在工具栏上选择“刷新”。
添加私钥证书
按照以下步骤将私钥证书添加到运行标准逻辑应用的虚拟机主机上的受信任根 CA 存储中。
在 Azure 门户中,打开你的逻辑应用资源。 在逻辑应用资源菜单中的“设置”下,选择“证书”。
选择“自带证书(.pfx)”选项卡,然后选择“添加证书”。
在打开的“添加私钥证书”窗格中的“源”下,选择以下选项之一:
上传证书(.pfx)
提供以下值:
参数 说明 PFX 证书文件 找到并选择你的私钥证书 (.pfx) 文件。 证书密码 输入导出 PFX 文件时创建的密码。 证书易记名称 输入要在逻辑应用资源中显示的证书名称。 完成后,选择“验证”>“添加”。
从密钥保管库导入。
选择“选择密钥保管库证书”并提供以下值:
参数 说明 订阅 选择与密钥保管库关联的 Azure 订阅。 密钥保管库 选择包含你的私钥证书 (.pfx) 文件的密钥保管库。 证书 选择密钥保管库中的 PKSCS12 证书。 保管库中的所有 PKCS12 证书将与其指纹一起列出,但并非所有证书均受 Azure 逻辑应用的支持。 完成后,选择“选择”>“验证”>“添加”。
添加证书后,从“指纹”列复制证书的指纹值。
在逻辑应用资源菜单中的“设置”下,选择“配置”。
在“应用程序设置”选项卡上,选择“新建应用程序设置”。 添加名为 WEBSITE_LOAD_CERTIFICATES 的新应用程序设置,并输入之前复制的证书指纹值。
有关详细信息,请参阅在单租户Azure 逻辑应用中编辑标准逻辑应用的主机和应用设置。
如果添加的证书未出现在私钥证书列表中,请在工具栏上选择“刷新”。
使用 MQ 内置连接器创建连接时,在连接信息框中选择“使用 TLS”。
在“客户端证书指纹”属性中,输入之前复制的私钥证书的指纹值,这会启用服务器-客户端(双向)身份验证。 如果不输入指纹值,连接器将使用仅服务器(单向)身份验证。
排查问题
浏览或接收操作失败
如果在空队列上运行浏览或接收操作,该操作将失败并出现以下标头输出:
连接和身份验证问题
当工作流使用 MQ 托管连接器连接到本地 MQ 服务器时,可能会收到以下错误:
"MQ: Could not Connect the Queue Manager '<queue-manager-name>': The Server was expecting an SSL connection."
MQ 服务器需要提供由受信任的证书颁发机构颁发的证书。
MQ 服务器要求你界定要与 TLS 连接配合使用的密码规范。 但是,出于安全目的,也是为了包含最佳安全套件,Windows 操作系统会发送一组受支持的密码规范。
MQ 服务器运行所在的操作系统会选择要使用的套件。 若要使配置匹配,必须更改 MQ 服务器设置,以便密码规范与 TLS 协商中所选的选项匹配。
尝试连接时,MQ 服务器会记录一条事件消息,即连接因 MQ 服务器选择了不正确的密码规范而失败。 这条事件消息包含 MQ 服务器从列表中选择的加密规范。 在服务器连接通道配置中,更新密码规范以匹配事件消息中的密码规范。