应用程序服务器上安装的 IBM MQ .Net 客户端使用什么证书名称?

What certificate Name to use for IBM MQ .Net client installed on application server?

我正在使用安装在应用程序服务器上的 IBM MQ WebSphere 客户端 v 7.5。

为了安全地连接到 MQ 队列管理器,我必须通过名称应为 ibmwebspheremq + "userid" 的证书。我将代码放在 APP SERVER 上以测试 MQ 连接性。如果我指定域用户 ID,它对我来说工作正常,但对其他域用户无效。那么应该使用什么证书名称,以便它适用于所有域用户??

证书标签:ibmwebspeheremq.kdb 位于本地路径

证书名称:使用strmqikm.exe,打开上面的证书并检查名称 到目前为止,这个 CN 是 "ibmwebspheremq" + 111111(domain userid) 并且它对域用户 111111 工作正常,但是对于域用户 222222 它会抛出 SSL 错误。

P.S。必须维护安全

根据 2015 年 9 月 11 日 OP 评论更新
我正在使用 .NET 应用程序并通过 dll amqmdnet 提供的 IBM.WMQ 接口完成代码。我有 KDB 证书,我刚刚在配置中提供了本地证书的路径。我可以访问 APP 服务器(MQ 客户端所在的位置)上特定用户的 MQ 服务器,但是如果我想访问所有用户,那么如何访问?因为在我的例子中,证书标签名称(使用 strmqikm.exe)应该类似于 ibmwebspheremq + userid。对于个人用户,我可以通过单独登录到应用程序服务器来访问证书,但不能同时为所有用户访问。只有一个证书,如前所述,它是非JAVA申请。

MQ 客户端要么使用 IBM 的 C 代码,要么使用 Java 和 JRE 的 JSSE 提供程序。其中每一个都有不同的行为和要求。

JavaEE 应用程序服务器将使用 JSSE 提供程序及其规则从 JKS 选择个人证书。这可能包括也可能不包括搜索特定标签。任何使用 IBM 编译的 C 代码 API 的东西都需要 KDB 中的个人证书的特定标签。此外,行为在不同版本之间发生了变化,如 IBM 的技术说明 Specifying the userid in the SSL certificate label for an MQ client.

中所述

如技术说明中所述,Java 客户端使用标准 Java 方法查找个人证书,完全不依赖于标签。对于非 Java 客户端,该要求仅 。 App 服务器使用 JKS,非 Java 客户端使用 KDB。由于您没有提到在 JKS 和 KDB 之间转换证书,我假设您的测试人员没有使用 C 客户端或 KDB。

据推测,您的测试人员正在使用与应用服务器相同的 JKS。如果他们有正确的路径和访问它的密码,并且它有个人证书,他们将能够找到并出示个人证书。如果它有多个个人证书,则 MQ 无法控制它如何选择要显示的个人证书。那是 Java 的事情。如果这是问题所在,答案很简单——要么使用一个个人证书和一个密钥库,要么每个测试人员都有自己的 JKS,每个人都有自己的个人证书。

Security must be maintained

在这种情况下,后一种方法是首选。每个测试人员都应该有自己的 JKS 和自己的个人证书。

另一种可能性是您有多种证书,每一种证书都由客户端找到并正确呈现给服务器,但存在证书交换问题。如果每个开发人员都有自己的证书并且都是自签名的,则 public 部分 必须 在 QMgr 的 KDB 中才能被接受。

如果您想要更准确的答案,您将需要提供很多更多详细信息,例如测试人员使用什么代码、密钥库和证书进行测试,是否这些是自签名证书,测试人员是否使用相同的应用程序通道并从同一节点进行测试,您是否使用 SSLCAUTH,等等。我还建议使用我在 [=13= 中概述的调试程序].

MQ v7.5 C# 客户端在内部调用 MQ C 客户端以建立到队列管理器的安全连接。登录用户 ID 用于制作 ibmwebspheremq<userid> 证书标签并从 KDB 中选择正确的客户端证书。因此,对于@Dirty Developer,当用户登录时应用程序正在连接,KDB 中存在带有 his/her userid 后缀的标签的证书。

从 MQ v8 开始,证书标签不再需要始终以用户 ID 为后缀。 MQ v8 提供了一个 CertificateLabel 属性,应用程序可以使用它来指定任何证书标签。 MQ 客户端将使用证书标签来定位在 SSL 握手期间发送的个人证书。在 MQ v8 .NET 客户端中,这个 属性 被命名为 MQEnvironment.CertificateLabelHere 更多关于 MQ v8 中的证书标签。

研究了这么久终于有了答案!!!

1) 不可能每次都为要在服务器上使用 MQ 的每个用户更改证书名称。 2) 我们必须找到适用于所有用户的证书名称(这是我的问题?:))和合并此更改的方法。

实际程序:
3) 我开发了一个代码来连接到 WCF 服务中的 MQ,并在 IIS 上托管该服务
4) 对于服务器上的 IIS 用户,我有 SERVICE ACCOUNT,我绑定了证书标签,即 ibmwebspheremq +
5) 所有想要连接的客户端都必须调用我在 IIS 服务器和 volla 上部署的服务 !!!!!!成功了。
6) 您必须将该服务帐户与您的 role/domain 用户 ID
绑定 7) 注意:在服务器上,您必须为服务帐户提供对 IBM 文件夹的访问权限。