配置 IBM WebSphere Message Broker 来对数据签名

Web Services Security 的签名流配置 IBM WebSphere Message Broker 来对数据签名

Mike Johnson, 软件开发人员, IBM

2008 年 7 月 28 日

设置 Web Services Security (WS-Security) 来对应用程序与 IBM® WebSphere® Message Broker 之间发送和接收的数据进行签名。本文描述基本概念、如何设置环境和如何配置 WebSphere Message Broker 来对数据签名。这里提供的信息与平台和操作系统无关,但是您可以在适当的地方看到特定操作系统的示例。本文结尾处关于术语的部分将帮助阐明本文所描述的概念。

什么是签名?

首先,让我们看看与签名有关的一些重要概念的定义:

签名提供消息完整性和签名者身份验证。
消息完整性确保消息未被修改。
签名者身份验证(也称为数字签名)确保消息发送者的身份是有效的。
密钥用于对消息签名。
证书用于验证消息的内容。
密钥存储库保存这些证书和密钥。
可以使用工具来设置密钥存储库,例如 WebSphere Message Broker Java™ Runtime Environment (JRE) 组件中的工具 keytool 和 iKeyman。您必须提供有关您在何处创建了密钥存储库的信息,这样 WebSphere Message Broker 才能使用它们来完成签名过程。

您还需要定义 WebSphere Message Broker 策略,以告诉系统是否正在使用签名或加密,以及哪一端在执行签名或加密。然后将该策略与某个绑定相关联,此绑定将该策略绑定到 WebSphere Message Broker 的流。该绑定从 WS-Security 签名的角度告诉 WebSphere Message Broker 如何处理传入和传出消息。

密钥存储库

如上所述,密钥存储库是用于存储证书和密钥条目的存储库。虽然似乎有点混淆,但是存在两种类型的密钥存储库,它们仅在使用方式方面存在区别:

密钥存储库:可以在密钥存储库中放置所有的私钥和公钥证书 (PKC)。
信任存储库:可以在信任存储库中放置所有受信任的根证书颁发机构(certificate authority,CA)证书。这些证书用于建立任何入站 PKC 的信任关系。信任存储库通常仅包含公钥。
可以定义密钥存储库和信任存储库以应用于 WebSphere Message Broker 或应用于 WebSphere Message Broker 上的某个执行组。有关这方面的更多详细信息,请访问 WebSphere Message Broker 信息中心(请参阅参考资料以获取链接)。稍后您可以在本文中看到示例。

密钥存储库包含以下条目:

密钥存储库——密钥条目:这种类型的密钥存储库条目包含非常敏感的加密密钥信息,该信息以受保护的格式存储以防止未经授权的访问。通常,存储在此类条目中的密钥是对对应的公钥进行身份验证的证书链所附带的私钥。
信任存储库——受信任的证书条目:这种类型的条目包含单个属于另一方的 PKC。将其称为受信任的证书的原因在于,密钥存储库所有者信任该证书中的公钥的确属于由该证书的主体(所有者)所标识的身份。此类条目可用于对其他方进行身份验证。
WebSphere Message Broker 仅支持将 Java 密钥存储库(Java keystore,JKS)用于密钥存储库和信任存储库。

设置密钥存储库

设置密钥存储库的最快方法是创建您自己的证书,称为自签名证书。您最终将获得包含公开证书和私钥的密钥存储库。要设置信任存储库,您需要导出公开证书并将其导入新的信任存储库。信任存储库通常仅包含公开证书。

当 WebSphere Message Broker 接收到消息时,除非设置了选项 Trustany,否则将根据信任存储库中的证书来验证消息中的证书。您可以在图 17 中看到此选项,其中将信任设置为 TrustStore。

WebSphere Message Broker 提供的 keytool 实用工具或 iKeyman 实用工具对密钥存储库进行管理。
参与3

3同行回答

报告执行组设置在为 WebSphere Message Broker 定义密钥存储库以后,您可以使用 mqsireportproperties 命令来查看名为 test_brk 的 WebSphere Message Broker 和名为 testexecutiongroupname 的执行组的设置(请参见清单 4)。)清单 4. 使用 mqsireportproperties   ...显示全部
报告执行组设置
在为 WebSphere Message Broker 定义密钥存储库以后,您可以使用 mqsireportproperties 命令来查看名为 test_brk 的 WebSphere Message Broker 和名为 testexecutiongroupname 的执行组的设置(请参见清单 4)。)

清单 4. 使用 mqsireportproperties
               
mqsireportproperties test_brk -e testexecutiongroupname -o ComIbmJVMManager –r

代理范围的设置
如果还没有为执行组设置属性的话,使用 mqsichangeproperties 命令来设置的属性将应用于整个 WebSphere Message Broker。mqsireportproperties test_brk -o BrokerRegistry –a 为您提供了用于代理范围的设置的命令,如清单 5 所示。

清单 5. 报告代理范围的设置
               
BrokerRegistry=''     
uuid='BrokerRegistry'
brokerKeystoreType='JKS'
brokerKeystoreFile=''
brokerKeystorePass='brokerKeystore::password'
brokerTruststoreType='JKS'
brokerTruststoreFile=''
brokerTruststorePass='brokerTruststore::password'
httpConnectorPortRange=''
httpsConnectorPortRange=''


使用代理范围的信任存储库密码来更新 WebSphere Message Broker
下面您将通过为其提供信任存储库密码来更新 WebSphere Message Broker;请注意,必须停止 WebSphere Message Broker 才能完成此操作。清单 6 显示了该命令的情况。

清单 6. 更改代理范围的信任存储库密钥
               
mqsisetdbparms test_brk
-n brokerTruststore::password
-u temp -p pa55word

此时,您已经设置并定义了密钥存储库,并且您已经准备好了解有关签名的更多信息了。

签名
您希望验证发送到接收者的消息还没有被篡改。任何人都可以阅读该消息中的数据,但是您可以检查内容的完整性。
为此,可以应用 WS-Security 标准来指示消息的哪些位已进行了散列操作。使用此信息来定义应用于消息的策略,以支持对消息进行签名。消息是包含标头信息的信封,可以使用标头信息来告诉接收系统如何对传入消息进行身份验证。

完整内容请参见:

http://www.ibm.com/developerwork ... s/ws-messagebroker/收起
2008-07-29
浏览1360
要检查该信任存储库,可以运行 keytool 实用工具以显示内容。从命令行输入 keytool -list -keystore c:\argo\security\server.keystore –v。清单 1 显示了此命令的典型输出。清单 1. keytool 命令的典型输出              ...显示全部
要检查该信任存储库,可以运行 keytool 实用工具以显示内容。从命令行输入 keytool -list -keystore c:\argo\security\server.keystore –v。清单 1 显示了此命令的典型输出。

清单 1. keytool 命令的典型输出
                        
Alias name: mikespublickey
Creation date: 06-Mar-2008
Entry type: trustedCertEntry
                     
Owner: CN=KDHMT99.hursley.ibm.com, C=GB
Issuer: CN=KDHMT99.hursley.ibm.com, C=GB
Serial number: 47cfeaf6
Valid from: 06/03/08 13:00 until: 06/03/09 13:00
Certificate fingerprints:
MD5:  36:52:BF:C0:E4:67:6F:E2:3F:1E:00:91:5D:0B:8A:54
SHA1: F4:50:21:6B:16:60:A3:3B:ED:56:59:AE:03:1A:E6:5D:52:DC:57:66
现在您已经填充了信任存储库和密钥存储库,下面可以运行 mqsichangeproperties 命令(并将对象名称设置为 ComIbmJVMManager)来为 WebSphere Message Broker 定义密钥存储库。为 WebSphere Message Broker(针对所有执行组)设置密钥存储库属性,或在 WebSphere Message Broker(此示例使用了 2008年 5 月发布的 WebSphere Message Broker V6.1 GA2 版本)中为某个单独的执行组设置密钥存储库属性。清单 2 为名为 test_brk 的 WebSphere Message Broker 和名为 testexecutiongroupname 的执行组设置密钥存储库。从 WebSphere Message Broker 控制台中使用下面的命令。

清单 2. 为执行组定义密钥存储库
                        
mqsichangeproperties test_brk -e testexecutiongroupname -o
  ComIbmJVMManager -n keystoreFile -v [Location of server keystore]
                     
mqsichangeproperties test_brk -e testexecutiongroupname -o
  ComIbmJVMManager -n keystoreType -v JKS
mqsichangeproperties test_brk -e testexecutiongroupname -o
  ComIbmJVMManager -n keystorePass -v testexecutiongroupname
  Keystore::password

有关 mqsichangeproperties 命令的更多信息,请访问 WebSphere Message Broker 信息中心(请参阅[url=#resources]参考资料[/url])。下面为 WebSphere Message Broker 的执行组定义信任存储库。对于此定义,请指定 truststoreFile、truststoreType 和 truststorePass 并附带 –n 参数,如清单 3 所示。

清单 3. 定义执行组的信任存储库
                        
mqsichangeproperties test_brk -e testexecutiongroupname -o
  ComIbmJVMManager -n truststoreFile -v [Location of server truststore]
                     
mqsichangeproperties test_brk -e testexecutiongroupname -o
  ComIbmJVMManager -n truststoreType -v JKS
mqsichangeproperties test_brk -e testexecutiongroupname -o
  ComIbmJVMManager -n truststorePass -v testexecutiongroupname
  Truststore::password
收起
2008-07-29
浏览1295
创建自签名证书下面使用 iKeyman V7.0.3.28 来逐步地创建一个自签名的证书以便分发到服务器。从命令行窗口中(例如在 Microsoft® Windows® 命令提示符中)运行 iKeyman。IBM Key Management 窗口将打开。单击 New > Self-Signed Certificate 并按照提示操作。通过从下拉列...显示全部
创建自签名证书
下面使用 iKeyman V7.0.3.28 来逐步地创建一个自签名的证书以便分发到服务器。
从命令行窗口中(例如在 Microsoft® Windows® 命令提示符中)运行 iKeyman。IBM Key Management 窗口将打开。单击 New > Self-Signed Certificate 并按照提示操作。通过从下拉列表中选择 Personal Certificates(请参见图 1)来获取新的自签名证书的公开位,其中同时包含私有和公开部分。

图 1. Personal Certificates 视图

Figure1.jpg

选择您新创建的证书。单击 Extract Certificate,如图 1 所示,以打开 Extract Certificate to a File 窗口。选择数据类型,例如 Based64,然后单击 OK。证书的公开部分将创建为 .arm 文件(请参见图 2)。

图 2. 提取公开部分并将其存储在文件中
将该 .arm 文件分发到正在运行 WebSphere Message Broker 的服务器。将该 .arm 文件导入服务器的信任存储库:将 mikescert.arm 文件存储在 server/recipient 计算机上。在 server/recipient 计算机上,运行 iKeyman 以启动 IBM Key Management 工具。从下拉列表中选择 Signer Certificates,如图 3 所示。

图 3. 选择 Signer Certificate 视图
单击 Add 以从文件导入公钥。从存储 .arm 文件的位置选择 mikescert.arm,如图 4 所示,然后单击 OK

图 4. 选择要导入的 ARM 文件
为导入的证书提供名称,如图 5 所示,然后单击 OK

图 5. 命名公开证书
收起
2008-07-29
浏览1256

提问者

aitiaodou
擅长领域: 中间件双活存储

相关问题

相关文章

问题状态

  • 发布时间:2008-07-29
  • 关注会员:0 人
  • 问题浏览:6648
  • 最近回答:2008-07-29
  • X社区推广