websphere mq
在你开始前
本教程显示了如何在z / OS上使用带有Microsoft Windows的MQ SSL来设置WebSphere MQ和WebSphere Message Broker产品之间基于SSL的通信。 它显示了如何检查SSL密码规范(SSLCIPH)的各种组合。 它还演示了错误情况,例如无效证书和过期证书。
我们使用z / OS平台上的面板执行所有这些任务,这对于z / OS上经验相对较少的用户来说非常容易。 在本文的结尾,我们列出了z / OS上的所有RACF命令(例如创建密钥环,将证书添加到密钥环等)。 这些命令执行的操作与z / OS上的面板在z / OS平台上的MQ SSL设置相同。
目标
- 在z / OS队列管理器上设置MQ SSL
- 在z / OS队列管理器和WebSphere Message Broker工具箱之间建立单向SSL通信
- 在z / OS队列管理器和WebSphere Message Broker工具箱之间建立双向SSL通信
- 演示SSLCIP各种组合的SSL通信
- 演示SSLCIPH,无效证书和过期证书无效组合的错误方案。
先决条件
您应该熟悉:
- z / OS的基础
- z / OS上各种面板(ISPF,RACF等)的用法
- IBM WebSphere MQ
- IBM WebSphere Message Broker(运行时和工具包)概念,
- 对Microsoft Windows上的SSL有所了解。
系统要求
要实现本教程中列出的任务,您需要:
- Microsoft Windows计算机
- IBM WebSphere MQ V6或更高版本
- IBM WebSphere Message Broker V6或V6.1
- IBM WebSphere Message Broker工具包V6或V6.1
- 安装了RACF的z / OS LPAR
持续时间
- 2小时
关键字和定义
SSL(安全套接字层)
SSL是一种行业标准协议,可在应用程序协议和通信层(通常为TCP / IP)之间提供数据安全层。 SSL使用加密技术,数字签名和数字证书来提供消息保密性,消息完整性以及客户端和服务器之间的相互身份验证。
MQ SSL
在WebSphere MQ中,您可以使用SSL在两个队列管理器之间使用每个队列管理器上的数字证书进行通信。
SSLCIPH(SSL密码规范)
SSLCIPH为SSL连接定义了一个CipherSpec。 WebSphere MQ SSL通道定义的两端必须包括属性,并且SSLCIPH值必须在通道的两端指定相同的CipherSpec。 该值是一个字符串,最大长度为32个字符。 此属性对所有通道类型均有效。 仅对传输类型(TRPTYPE)为TCP的通道有效。 如果TRPTYPE不是TCP,则数据将被忽略并且不会发出错误消息。 SSLCIPH是可选属性。
要了解更多信息,请参阅WebSphere MQ支持的SSL 。
SSLCAUTH(SSL客户端身份验证)
SLCAUTH用于定义通道是否需要从SSL客户端接收和认证SSL证书。 可能的值为:
- 可选 -如果对等SSL客户端发送证书,则照常处理证书,但如果未发送证书,则身份验证不会失败。
- 必需 -如果SSL客户端不发送证书,则身份验证失败。
默认值为REQUIRED。
您可以在非SSL通道定义上指定SSLCAUTH的值,该值缺少SSLCIPH或为空白。 您可以使用它暂时禁用SSL进行调试,而无需先清除然后重新输入SSL参数。
SSLCAUTH是可选属性。
该属性在除发送者通道之外的所有可以接收通道初始化流的通道类型上均有效。 此属性对以下通道类型有效:
- *服务器
- *接收者
- *请求者
- *服务器连接
- *集群接收器
SSLPEER(SSL对等)
SSLPEER属性用于检查来自WebSphere MQ通道另一端的对等队列管理器或客户机的证书的专有名称(DN)。 如果从对等方收到的DN与SSLPEER值不匹配,则通道不会启动。 SSLPEER是可选属性。 如果未指定值,则在启动通道时不检查对等DN。 在z / OS上,该属性的最大长度为256个字节。 在所有其他平台上,它是1024个字节。 在z / OS上,不检查使用的属性值。 如果输入不正确的值,则通道将在启动时失败,并且错误消息将被写入通道两端的错误日志中。 通道的两端也会生成一个通道SSL错误事件。 在z /OS®以外的支持SSLPEER的平台上,首次输入字符串时会检查其有效性。 您可以在非SSL通道定义上指定SSLPEER的值,该值缺少SSLCIPH或为空。 您可以使用它暂时禁用SSL进行调试,而不必清除并稍后重新输入SSL参数。
您可以在WebSphere MQ信息中心中找到有关这些关键字的更多信息。
假设条件
以下各节提供了在WebSphere Message Broker Toolkit(窗口)和z / OS上的WebSphere MQ队列管理器之间建立MQ SSL连接的步骤和屏幕截图。
假设1:队列管理器已创建并正在运行,并且通道启动器正在运行。 SSL设置尚未激活。
假设2:在本教程中,我们使用两个用户ID:MA01USR和MA02USR分别用于队列管理器MA01和MA02。 这些用户ID需要有权发出RACDERT命令。 请与系统管理员联系,以查看您将使用的用户ID是否可以访问RACDERT命令。 有关各种概要文件定义的更多信息,请参阅本文档结尾处讨论的主题RACDCERT COMMAND 。
在下面的部分中,您将学习如何创建钥匙圈。 可以考虑使用钥匙圈来存放数字证书。 这些证书用于确定客户端系统的可信赖性。
创建钥匙圈
- 选择选项R(RACF) ,如图1所示,然后按Enter键。
图1. WMQI更改团队菜单
- 选择选项7(数字证书和密钥环) ,如图2所示,然后按Enter键。
图2.服务选项菜单
- 选择选项6(“密钥环服务”) ,如图3所示,然后按Enter。
图3.服务选项菜单
- 选择选项1(创建一个新的钥匙圈) ,在“ 用户”字段中输入用户名(在这种情况下为
MA01USR
),如图4所示,然后按Enter。图4.数字证书密钥环服务
- 输入
MA01
作为环的名称,如图5所示,然后按Enter。图5.数字证书密钥环名称
- 图6显示密钥环已成功创建并添加到RACF数据库。
图6.确认已添加钥匙圈
- 按F3键,直到返回主菜单。
在下一部分中,您将学习使用RACF创建CA证书。
创建客户端身份验证(CA)证书
- 如图7所示,选择选项1(生成证书和公用/专用密钥对) ,然后按Enter。
图7.数字证书和相关服务
- 输入
X
以请求CA证书,如图8所示,然后按F8键。 (F8是向下滚动功能键。)图8.生成数字证书
- 输入
First.M.Last
的First.M.Last , 标题的Software Engineer
, 组织单位的MVS
,如图9所示:图9.生成数字证书(更多选项)
- 输入CA证书的开始日期/时间和结束日期/时间的值,如图10所示。这些值基本上表示证书的有效性。 输入“ CA01”作为CA证书的标签名称 ,然后按F8。
图10.生成数字证书(更多选项)
- 通过选项Certsign输入X,如图11所示。如果未收到错误消息,则表明CA证书已成功创建并已添加到RACF数据库。
图11.生成数字证书(更多选项)
- 要列出CA证书
CA01
,请选择选项4以列出CA证书,如图12所示,然后按Enter。图12.数字证书和相关服务
- 输入
X
在“ 证书类型”字段中的“证书 颁发机构”下,然后选择选项3 ,如图13所示。按Enter键。
图13.数字证书服务主面板
- 输入
CA01
作为证书的标签,然后选择选项1 ,如图14所示。按Enter键。图14.数字证书列表过滤面板
- 图15显示了证书CA01的内容。 按F8查看有关证书的更多详细信息。
图15.更改状态/删除数字证书
在下一节中,您将学习创建由CA证书签名的个人证书。 签名CA证书是您在上一节中创建的带有CA01标签的证书。
创建个人证书
- 选择选项1 ,如图16所示,然后按Enter。
图16.数字证书和相关服务
- 输入您要用来生成个人证书的个人用户ID。 选择“ 证书颁发机构”作为“ 签名证书”类型,并为标签输入
CA01
,如图17所示。按F8向下滚动。图17.生成数字证书
- 输入
MAO1.PERSONAL
作为您选择的公用名 ,如图18所示。按F8向下滚动。图18.生成数字证书(更多选项)
- 在标签字段中输入个人证书的名称。 常用格式为ibmWebSphereMQ XXXX ,其中XXXX代表四字母队列管理器名称。 选择“ 握手 ”选项,如图19所示,然后按Enter。
图19.生成数字证书(更多选项)
将证书连接到钥匙圈
接下来,我们需要将CA证书和个人证书都添加到密钥环中,因为队列管理器在与客户端系统执行SSL握手时会查看其密钥环中的证书列表。
将CA证书CA01连接到钥匙圈MA01
在本部分中,您将学习如何将CA证书连接(添加)到钥匙圈。
- 如图20所示,选择选项6 (创建,列出或删除整个钥匙圈或将证书连接到钥匙圈或从中删除证书) ,然后按Enter。
图20.数字证书和相关服务
- 选择选项4以将数字证书连接到钥匙圈,如图21所示,然后按Enter。
图21.数字证书密钥环服务
- 为环名输入
MA01
,然后为“ 证书类型”选择“ 证书颁发机构”选项。 输入CA01
对于Label name ,选择Certificate Authority作为使用证书,如图22所示,然后按Enter。
图22.将数字证书连接到钥匙圈
- 图23显示CA证书CA01已成功连接到密钥环MA01。
图23.数字证书密钥环服务
在下一部分中,您将学习将个人证书连接(添加)到钥匙圈。
将个人证书ibmWebSphereMQMA01连接到钥匙圈MA01
- 输入用于创建个人证书(
MA01USR
)的用户ID,然后选择选项4 ( 将数字证书连接到钥匙圈 ),如图24所示,然后按Enter。图24.数字证书密钥环服务
- 输入振铃名称MA01,然后输入用户ID MA01USR作为证书类型 (因为这是个人证书)。 接下来,为Label name输入
ibmWebsphereMQMA01
,为Usage字段选择Personal ,如图25所示,然后按Enter。图25.将数字证书连接到钥匙圈
- 图26显示个人证书ibmWebsphereMQMA01已连接到密钥环MA01。
图26.数字证书密钥环服务
在下一节中,您将学习列出所有连接(添加到)钥匙圈的证书。
列出连接到钥匙圈的证书
- 选择选项3 (列出现有的钥匙圈),为用户ID输入
MA01USR
,如图27所示,然后按Enter。图27.数字证书密钥环服务
- 输入
MA01
作为钥匙圈名称,如图28所示,然后按Enter。图28.数字证书列表密钥环服务
- 图29显示了连接到密钥环MA01的所有证书。
图29.列出环名称
清单1显示了通道启动程序日志( MA01CHIN)
的代码段。 请注意变量SSLTASKS (=0)
, SSLKEYR (=' ')
和消息“
0 SSL server subtasks started, 0 failed”
这表示尚未为SSL通信设置队列管理器。
另请注意,端口地址为1501的侦听器已启动的消息。
清单1.通道启动器(MA01CHIN)日志的片段
CSQX080I MA01 CSQXGIP SSLTASKS=0, SSLRKEYC=0
CSQX081I MA01 CSQXGIP SSLKEYR=
CSQX082I MA01 CSQXGIP SSLCRLNL=
CSQX085I MA01 CSQXGIP LU62CHL=200, LUGROUP= ,
LUNAME= , LU62ARM=
CSQX090I MA01 CSQXGIP TCPCHL=200,
TCPKEEP=NO, TCPNAME=TCPIP
CSQX091I MA01 CSQXGIP TCPSTACK=SINGLE, IPADDRV=IPV4
CSQX092I MA01 CSQXGIP OPORTMIN=0, OPORTMAX=0
CSQX093I MA01 CSQXGIP DNSWLM=NO, DNSGROUP=
CSQX094I MA01 CSQXGIP RCVTIME=0,
RCVTTYPE=MULTIPLY, RCVTMIN=0
CSQX011I MA01 CSQXGIP Client attachment feature available
CSQX141I MA01 CSQXADPI 8 adapter subtasks started, 0 failed
CSQX151I MA01 CSQXSSLI 0 SSL server subtasks started, 0 failed
CSQX410I MA01 CSQXREPO Repository manager started
CSQX015I MA01 CSQXSPRI 5 dispatchers started, 0 failed
CSQX022I MA01 CSQXSUPR Channel initiator initialization complete
CSQX251I MA01 CSQXSTRL Listener started,
TRPTYPE=TCP INDISP=QMGR
CSQX023I MA01 CSQXLSTT Listener started,
port 1501 address *,
提取CA证书
现在,队列管理器有了证书。 当工具箱连接(作为MQ客户端)时,队列管理器将此证书提供给工具箱。 要验证队列管理器的证书,工具箱需要CA证书。
在此之前,请创建配置管理器,并为已启动WebSphere Message Broker工具箱的用户ID定义ACL条目。 有关创建配置管理器和ACL的更多信息,请参考IBM WebSphere Message Broker信息中心 。
要将CA文件提取到物理顺序(PS)文件中,请按照下列步骤操作。
- 使用如图30所示的参数创建一个PS文件。该文件将用于提取CA证书CA01。
图30.数据集信息
- 选择选项3 (将证书写入数据集),如图31所示,然后按Enter。
图31.数字证书和相关服务
- 由于我们正在将CA证书转移到Windows计算机,因此为证书类型选择选项证书颁发机构 ,如图32所示。输入标签名称为CA01,然后输入想要提取的证书所在的数据集名称。 Base64编码的X.509证书的选项,这是提取的证书的默认格式类型。 按Enter键。
图32.将证书写入数据集
- 使用ISPF 3.4选项,您可以查看提取的证书,
清单2显示了提取的证书CA01的内容。
清单2. CA证书CA01的内容
********************************* Top of Data **********************************
-----BEGIN CERTIFICATE-----
MIICfTCCAeagAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMQwwCgYDVQ
QLEwNNVlMxGjAYBgNVBAwTEVNvZnR3YXJlIEVuZ2luZWVyMRUwEwYDV
QQDEwxGaXJzdC5NLkxhc3QwHhcNMDkwMzI5MTgzMDAwWhcNMTAwMz
MwMTgyOTU5WjBBMQwwCgYDVQQLEwNNVlMxGjAYBgNVBAwTEVNvZn
R3YXJlIEVuZ2luZWVyMRUwEwYDVQQDEwxGaXJzdC5NLkxhc3QwgZ8w
DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMUbsc1Z5TNBP0GIGcWvSJZ
2Mh7WV3lsbA80z9KeXKEI+pHwePrKttk3Xbz3EHwk6ImiaFlMEdwdfCaib5/I
5chXa5qXrQRknpMywCBvbBYvnX0IK/eX2OushIIxOecDoCdejNZPucq2qjc
bhKX5kXqvE0CeMxUWoZJWBcbcVwEjAgMBAAGjgYQwgYEwPwYJYIZIAYb
4QgENBDITMEdlbmVyYXRlZCBieSB0aGUgU2VjdXJpdHkgU2VydmVyIGZv
ciB6L09TIChSQUNGKTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BA
UwAwEB/zAdBgNVHQ4EFgQUhc9SF6OS/fmxfZhbWeyXiKPg6dUwDQYJKo
ZIhvcNAQEFBQADgYEAceSBdwf6cU6vc/O63WE8E6kB/lY1XLwSIWefEa6L
MicJHu+sbgsf/tRTu8L47D/wbo7JEEoCV3kYWvkFV3QasjFmCch9MfR0SP
FKXmUpcLPVtaHTyb+gSvCe5ZaOeCDlxbp2SZpNdKF2r2OLmhrssfAuNIa
+fE5l9Ed3nIMrpTE=
-----END CERTIFICATE-----
******************************** Bottom of Data ********************************
将CA证书文件传输到Windows工具包的存储库
请按照以下步骤将CA证书文件传输到Windows:
- 使用Windows资源管理器或命令提示符,创建一个名为
C:\MQSSL\MA01
的目录:C:\>md MQSSL C:\>cd MQSSL C:\MQSSL>md MA01
工具箱的密钥存储库将在
C:\MQSSL\MA01
。 - 将PS文件从z / OS计算机以ASCII模式通过FTP传输到Windows计算机。 将Windows计算机上的文件重命名为
qmgrname.arm
。 在我们的示例中是MA01.arm
。ftp> lcd C:\MQSSL\MA01 Local directory now C:\MQSSL\MA01. ftp> cd 'HLQ' 250 "HLQ." is the working directory name prefix. ftp> ascii 200 Representation type is Ascii NonPrint ftp> mget 'HLQ.SSLCA.MA01' 200 Representation type is Ascii NonPrint mget 'HLQ.SSLCA.MA01'? y 200 Port request OK. 125 Sending data set HLQ.SSLCA.MA01 250 Transfer completed successfully. ftp: 1596 bytes received in 0.02Seconds 99.75Kbytes/sec.
请注意, HLQ是高级限定符,并且对于每个z / OS LPAR都是不同的。 请与系统管理员联系以了解HLQ对您的系统的价值。
- 打开Windows命令提示符,然后输入命令
strmqikm
。 这将打开一个GUI。 - 通过选择Key Database File-New为Toolkit创建一个密钥存储库,并使用以下参数创建存储库:
- 密钥数据库类型: JKS
- 档案名称: key.jks
- 位置: C:\ MQSSL \ MA01
注意:密钥数据库类型很重要。 它必须是JKS密钥存储库,因为工具包是MQ Java客户端,默认情况下使用JKS存储库。
- 在密码提示下,两次输入
changeit
作为此存储库的密码。这是JKS存储库的默认密码。 不会在生产系统中使用它,但是对于本练习,让Toolkit采用默认值会更容易。 不要忘记密码,因为以后需要访问密钥库。 您可以查看默认情况下提供的CA证书列表。
- 单击添加 (右上角)。
- 在对话框提示中,输入
MA01.arm
作为证书文件名,并输入C:\MQSSL\MA01\
。 单击确定。 - 当提示您输入证书的标签时 ,请输入创建CA证书时给出的标签名称,即
CA01
。 这一点非常重要,因为标签名称的任何更改都将不允许工具包连接到队列管理器。 单击确定。 - 证书现在显示在“签署者证书”存储库中。 关闭文件(“ 密钥数据库文件-关闭” )。 关闭iKeyMan GUI。
因此,现在我们可以执行一种单向SSL通信,其中队列管理器MA01(位于z / OS平台上)将证书提供给Toolkit。 我们需要进行两项更改:
- 更改队列管理器以引用密钥集存储库。
- 更改通道
SYSTEM.BRK.CONFIG
以使用正确的SSCIPH值。
注意:您可以使用SYSTEM.BRK.CONFIG
通道将z / OS队列管理器连接到Windows Toolkit。
定义密钥环并创建证书并将其连接到密钥环后,您必须更改队列管理器,以便它使用密钥环获取SSL配置详细信息。
更改队列管理器MA01以引用密钥集存储库
- 使用MQ面板(请与系统管理员联系以进行访问),更新SSL密钥存储库字段以引用密钥环
MA01
。 - 选择选项3 (更改),然后为对象类型输入
Manager
。 输入MA01
作为队列管理器的名称,如图33所示,然后按Enter。 请注意,菜单名称在不同机器上可以不同。图33. IBM WebSphere MQ for z / OS-主菜单
- 显示图34。
图34.更改队列管理器-1
- 多次按F8键,直到到达图37中的面板。输入
MA01
作为SSL密钥存储库(即密钥环),并为SSL服务器任务字段指定8
(这表示将开始服务8个SSL服务器任务) SSL通信),如图35所示。按Enter键。图35.更改队列管理器-7
- 图36显示队列管理器MA01已成功更改为使用SSL工具。
图36.更改队列管理器– 7(更多选项)
或者,您可以使用此命令来更改所有队列管理器:
Qmgrname ALTER SSLKEYR(‘MA01’) SSLTASKS(8)
注意:上述更改只是临时更改。 重新启动/重新创建队列管理器后,必须重复上述更改。
- 重新启动通道启动器。 不要忘记启动监听器。
清单3显示了通道启动器现在将使用8 SSLTASKS的密钥环MA01。
清单3. Channel Initiator(MA01CHIN)日志
STC00503 +CSQX080I MA01 CSQXGIP SSLTASKS=8, SSLRKEYC=0
STC00503 +CSQX081I MA01 CSQXGIP SSLKEYR=MA01
STC00503 +CSQX082I MA01 CSQXGIP SSLCRLNL=
STC00503 +CSQX085I MA01 CSQXGIP LU62CHL=200, LUGROUP= , LUNAME= , LU62ARM=
STC00503 +CSQX090I MA01 CSQXGIP TCPCHL=200, TCPKEEP=NO, TCPNAME=TCPIP
STC00503 +CSQX091I MA01 CSQXGIP TCPSTACK=SINGLE, IPADDRV=IPV4
STC00503 +CSQX092I MA01 CSQXGIP OPORTMIN=0, OPORTMAX=0
STC00503 +CSQX093I MA01 CSQXGIP DNSWLM=NO, DNSGROUP=
STC00503 +CSQX094I MA01 CSQXGIP RCVTIME=0, RCVTTYPE=MULTIPLY, RCVTMIN=0
STC00503 +CSQX011I MA01 CSQXGIP Client attachment feature available
STC00503 +CSQX141I MA01 CSQXADPI 8 adapter subtasks started, 0 failed
STC00503 +CSQX410I MA01 CSQXREPO Repository manager started
STC00503 +CSQX151I MA01 CSQXSSLI 8 SSL server subtasks started, 0 failed
STC00503 +CSQX015I MA01 CSQXSPRI 5 dispatchers started, 0 failed
STC00503 +CSQX022I MA01 CSQXSUPR Channel initiator initialization complete
STC00503 +CSQX251I MA01 CSQXSTRL Listener started, TRPTYPE=TCP INDISP=QMGR
STC00503 +CSQX023I MA01 CSQXLSTT Listener started, 298
现在,您已经将队列管理器设置为使用SSL配置设置,您需要在执行连接时更新通道SYSTEM.BRK.CONFIG
以使用SSL密码规范属性。 下一节显示如何更新SSLCIPH属性。
更新通道SYSTEM.BKR.CONFIG以使用SSL密码规范作为NULL_SHA
- 使用MQ面板,选择选项3 (更改)以更改通道属性。 为对象类型选择Channel ,然后为队列管理器名称输入
MA01
,如图37所示。按Enter键。图37. IBM WebSphere MQ for z / OS-主菜单
- 更新SSL密码规范字段,使其具有
NULL_SHA
值和N
所需的SSL证书 (因为我们使用的是单向通信),如图38所示。图38.更改服务器连接通道-3
- 接下来,我们需要更新Domain连接设置,如图39所示。
图39.更新密码套件,密钥库和信任库
- 现在,尝试将工具包域重新连接到z / OS队列管理器。 连接应该成功。
建立双向(相互)通信
既然通信已经可以正常工作,那么在下一节中,您将学习如何执行相互通信,这是从Windows平台上的Message Broker到z / OS队列管理器的SSL通信。
在Windows上创建证书
- 在Windows命令提示符下,通过运行
strmqikm
命令启动iKeyMan GUI。 选择“ 密钥数据库文件-打开”,然后在对话框提示符下设置以下值:- 档案名称:
key.jks
- 位置:
C:\MQSSL\MA01
- 档案名称:
- 单击确定 。 在密码提示下,输入
changeit
。 - 切换到“ 个人证书”存储库 (在右上角附近的下拉列表),然后单击“ 新自签名” (在右下角)。
- 输入证书的以下值:
- 密钥标签:
toolkit
- 通用名称:将包含Windows框的IP地址>
将其他所有内容都设置为默认值,然后单击“ 确定” 。 新证书将出现在“个人证书”列表中。
- 密钥标签:
- 现在,我们需要提取证书的证书颁发机构部分,并将其安装在Queue Manager存储库中。 该过程与之前相同,但是相反。 单击提取证书(右下角),然后使用以下值提取CA证书:
- 证书文件名:
toolkit.arm
- 位置:
C:\MQSSL\MA01
单击确定 。 这将在
C:\MQSSL\MA01
创建一个名为toolkit.arm
的文件。 - 证书文件名:
- 将FTP(以ASCII模式)
toolkit.arm
发送到z / OS上的队列管理器,并将其存储在物理顺序文件中。ftp> put toolkit.arm 'hlq.SSL.TOOL' 200 Port request OK. 125 Storing data set hlq.SSL.TOOL 250 Transfer completed successfully. ftp: 730 bytes sent in 0.00Seconds 730000.00Kbytes/sec.
现在证书已存储在PS文件中,我们需要将此证书连接到钥匙圈MA01。 我们将在下一节中介绍。
将Windows证书添加到钥匙圈
发送证书之前,您需要使用以下参数创建目标PS文件(请参见图40)。
图40.更新密码套件,密钥库和信任库
接下来,您需要将Windows机器中提取的证书添加到z / OS机器上的RACF数据库中。 请按照以下步骤将证书添加到RACF数据库:
- 选择选项4 ,如图41所示,然后按Enter:
图41.数字证书和相关服务
- 选择选项1 ,为拥有钥匙圈
MA01,
的用户ID输入MA01USR
,如图42所示。按Enter键。图42.添加数字证书
- 输入
hlq .SSL.TOOL
作为数据集名称,并输入toolkit
作为在Windows计算机上创建的证书的标签名称。 为信任状态选择选项T ,如图43所示,然后按Enter。 hlq是系统专用的高级限定符。图43.添加数字证书
将Windows证书连接到z / OS上的MA01钥匙圈
- 选择选项1 ,输入
MA01USR
作为用户ID,如图44所示,然后按Enter。图44.数字证书密钥环服务
- 输入“ 环名称”为
MA01
,“ 证书类型”为用户IDMA01USR
。 对于证书的标签名称 ,输入toolkit,
然后在“ 用法”字段中选择“ 个人 ”,如图45所示。按Enter键。图45.将数字证书连接到钥匙圈
- 图46显示带有标签名称
toolkit
的证书已连接到钥匙圈MA01
。图46.数字证书密钥环服务
您可以使用下一节中所述的“列出证书”功能来确认证书已添加到钥匙圈中。
列出连接到MA01钥匙圈的所有证书
- 选择选项3 ,为用户ID输入
MA01USR
,如图47所示,然后按Enter。图47.数字证书密钥环服务
- 输入如图48所示的钥匙圈名称
MA01
,然后按Enter。图48.数字证书列表密钥环服务
- 图49显示了连接到密钥环MA01的所有证书。
图49.图49.列出环名称服务
确保工具箱与配置管理器断开连接(如果没有断开连接)。
- 输入以下命令,将
SSLCAUTH
为REQUIRED
或者,您可以使用MQ面板进行此更改。Command -> ALT CHL(SYSTEM.BKR.CONFIG) CHLTYPE(SVRCONN) SSLCAUTH(REQUIRED)
工具包中无需更改。
- 关闭工具包,停止CHANNEL启动器,然后重新启动它们。 将工具包连接到配置管理器。 连接应该成功通过。
避免SSLCIPH的无效组合
本节演示如何解决工具包密码套件值和z / OS队列管理器上SYSTEM.BKR.CONFIG
通道上SSL密码规范之间的SSLCIPH无效组合。 表1列出了不同的SSLCIPH值
表1. SSLCIPH值列表
密码套件(MQ) | Cihperspec(Java) |
---|---|
RC4_MD5_US | SSL_RSA_WITH_RC4_128_MD5 |
RC4_SHA_US | SSL_RSA_WITH_RC4_128_SHA |
RC4_MD5_EXPORT | SSL_RSA_EXPORT_WITH_RC4_40_MD5 |
RC2_MD5_EXPORT | SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 |
DES_SHA_EXPORT | SSL_RSA_WITH_DES_CBC_SHA |
NULL_MD5 | SSL_RSA_WITH_NULL_MD5 |
NULL_SHA | SSL_RSA_WITH_NULL_SHA |
RC4_56_SHA_EXPORT1024 | SSL_RSA_EXPORT1024_WITH_RC4_56_SHA |
DES_SHA_EXPORT1024 | SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA |
TRIPLE_DES_SHA_US | SSL_RSA_WITH_3DES_EDE_CBC_SHA |
- 将工具包上的Cipher Suite的值更新为
SSL_RSA_WITH_DES_CBC_SHA
,如图50所示。图50.更新SSLCIPH值
- 更新队列管理器上的
SSCIPH
值。 使用MQ面板,选择选项3并输入以下值(也在图51中)。 按Enter键。- 对象类型:通道
- 姓名 *
- 连接名称: MA01
- 目标队列管理器: MA01
- 动作队列管理器: MA01
图51.更新通道上的SSLCIPH值
- 使用选项3更改频道,选择频道
SYSTEM.BKR.CONFIG
,如图52所示。按Enter键。图52.更新通道上的SSLCIPH值
- 图53显示了用于更改服务器连接通道的第一个面板:
图53.更改服务器连接通道
- 多次按F8直到到达图54中的面板(“ Alternate a Server-Connection Channel – 3”
)
。 理想情况下,您应该为SSL密码规范字段指定值DES_SHA_EXPORT
,但是为了说明SSCIPH值的无效组合的错误情况,我们给出了NULL_SHA
的值。 将必需的SSL证书设置为Y
,然后按Enter。图54.更改SSL密码规范
- 图55显示了尝试将WebSphere Message Broker工具箱连接到z / OS队列管理器时的错误消息。
图55.更新通道上的SSLCIPH值
发现过期的证书
我们为另一个队列管理器MA02创建了过期的CA证书CA02。 过期的证书的End Date
已经过去。 请按照以下步骤查看过期的证书:
- 选择选项R ,如图56所示,然后按Enter。
图56. WMQI更改团队菜单
- 选择选项7 ,如图57所示,然后按Enter。
图57. RACF –服务选项菜单
- 选择选项4 ,如图58所示,然后按Enter。
图58.数字证书和相关服务
- 选择选项3和Certificate Authority作为证书类型 ,如图59所示。按Enter。
图59.数字证书服务主面板
- 选择1并输入
CA02
作为CA证书的标签名称,如图60所示,然后按Enter。图60.数字证书列表过滤面板
- 图61显示了CA证书,其中“结束日期”为过去的日期。
图61.更改状态/删除数字证书
- 图62显示了一条错误消息,指出由于证书已过期而无法建立连接。
图62.由于证书过期而导致的错误
- 清单4还显示了通道启动器(MA02CHIN)日志,该日志指示由于证书已过期而无法建立连接。 (出于安全原因,已标记DNSname。)
清单4.由于证书过期,通道启动器日志中的错误
connection DNSname (x.xxx.xxx.xx) CSQX658E MA02 CSQXRESP SSL certificate has expired, channel ????, connection DNSname (x.xxx.xxx.xx) CSQX658E MA02 CSQXRESP SSL certificate has expired, channel ????, connection DNSname (x.xxx.xxx.xx) CSQX658E MA02 CSQXRESP SSL certificate has expired, channel ????, connection DNSname (x.xxx.xxx.xx) CSQX658E MA02 CSQXRESP SSL certificate has expired, channel ????, connection DNSname (x.xxx.xxx.xx) CSQX658E MA02 CSQXRESP SSL certificate has expired, channel ????, connection DNSname (x.xxx.xxx.xx)
发现无效的证书
现在,我们将为此队列管理器删除队列证书和密钥环,并添加为队列管理器MA01创建的证书(CA),即CA01。 这将是无效的证书,因此无法建立连接。
图63显示了尝试将工具箱连接到z / OS队列管理器时的错误消息。
图63.由于证书无效而导致的错误
清单5显示了通道启动程序日志(MA02CHIN),指示由于无效证书而导致无法启动通道。
Listing 5. Error in the channel initiator log due to expired certificate
CSQX634E MA02 CSQXRESP SSL certificate failed remote check,
channel ????,
connection DNSname (xx.xx.xx.xxx)
CSQX634E MA02 CSQXRESP SSL certificate failed remote check,
channel ????,
connection DNSname (xx.xx.xx.xxx)
CSQX634E MA02 CSQXRESP SSL certificate failed remote check,
channel ????,
connection DNSname (xx.xx.xx.xxx)
CSQX634E MA02 CSQXRESP SSL certificate failed remote check,
channel ????,
connection DNSname (xx.xx.xx.xxx)
CSQX634E MA02 CSQXRESP SSL certificate failed remote check,
channel ????,
connection DNSname (xx.xx.xx.xxx)
Note that the certificate in the client repository on the toolkit side is unaltered.
RACF on z/OS command reference
This section lists all the RACF commands on z/OS (For Ex: create key ring, add a certificate to the key ring etc). You can use these commands to perform the same actions as the panels on z/OS for to set up MQ SSL the z/OS platform.
The RACDCERT COMMAND
The RACDCERT command stands for RACF digital certificate. You use it to create and maintain the digital certificates, and create the key rings which act as a repository for the digital certificate.
Check with your system administrator to set up access to the following profiles, which are
are sample RACF profile definitions for using the RACDCERT command.
Listing 6. Sample RACF profile definitions
RDEFINE FACILITY IRR.DIGTCERT.ADD UACC(NONE)
RDEFINE FACILITY IRR.DIGTCERT.ADDRING UACC(NONE)
RDEFINE FACILITY IRR.DIGTCERT.ALTER UACC(NONE)
RDEFINE FACILITY IRR.DIGTCERT.CONNECT UACC(NONE)
RDEFINE FACILITY IRR.DIGTCERT.LIST UACC(NONE)
RDEFINE FACILITY IRR.DIGTCERT.LISTRING UACC(NONE)
PERMIT IRR.DIGTCERT.ADD CLASS(FACILITY) ID(userid) ACCESS(CONTROL)
PERMIT IRR.DIGTCERT.ADDRING CLASS(FACILITY) ID(userid) ACCESS(READ)
PERMIT IRR.DIGTCERT.ALTER CLASS(FACILITY) ID(userid) ACCESS(READ)
PERMIT IRR.DIGTCERT.CONNECT CLASS(FACILITY) ID(userid) ACCESS(UPDATE)
PERMIT IRR.DIGTCERT.LIST CLASS(FACILITY) ID(userid) ACCESS(READ)
PERMIT IRR.DIGTCERT.LISTRING CLASS(FACILITY) ID(userid) ACCESS(READ)
The following sections list the RACDCERT commands that you can use instead of the RACF panels to perform various actions like Create a certificate, Add a certificate to the key ring etc. Note that this listing of the commands does not include the complete list of parameters for the commands.
Create a key ring
Issue the following command to create the key-ring:
RACDCERT ID (userid1) ADDRING (ring-name)
- ID = User ID of the channel initial address space, or the user ID owning the key ring.
- ADDRING = Desired key ring name with a maximum length of 237 characters.
- ring-name is case-sensitive, so uppercase is preferred.
For example:
RACDCERT ID (MA01USR) ADDRING (MA01)
Create a client authentication certificate
Issue the following command to create a client authentication (CA) certificate:
RACDCERT CERTAUTH GENCERT [(request-data-set-name)]
[SUBJECTSDN(
[CN('common-name')]
[T('title')]
[OU('organizational-unit-name1'
[, 'organizational-unit-name2', ...] )]
[O('organization-name')]
[L('locality')]
[SP('state-or-province')]
[C('country')]
[WITHLABEL('label-name')]
[NOTBEFORE([DATE(yyyy-mm-dd)] [TIME(hh:mm:ss)])]
[NOTAFTER([DATE(yyyy-mm-dd)] [TIME(hh:mm:ss)])]
- CN = Common name
- T = Title
- OU = Organizational Unit name
- O = Organization name
- L = Location
- SP = State or Province
- C = Country
- WITHLABEL = Label of the certificate
- NOTBEFORE = Date and time before which the certificate is not valid
- NOTAFTER = Date and time after which the certificate is not valid(ie expired)
For Example:
RACDCERT CERTAUTH GENCERT -
SUBJECTSDN (CN ('CA01') -
T (‘CA Certificate’) -
OU (‘TEST’) -
O (‘IBM’) -
L (‘BANGALORE’) -
SP (‘KARNATAKA’) -
C (‘INDIA’)) -
WITHLABEL (‘CA01’) -
NOTBEFORE([DATE(2000-12-20)] [TIME(12:00:00)])] -
NOTAFTER([DATE(2009-12-20)] [TIME(12:00:00)])]
Create a personal certificate
Issue the following command to generate the Personal certificate for the queue manager signed-certificate:
RACDCERT ID (TESTUSER) GENCERT [(request-data-set-name)]
[SUBJECTSDN(
[CN('common-name')]
[T('title')]
[OU('organizational-unit-name1'
[, 'organizational-unit-name2', ...] )]
[O('organization-name')]
[L('locality')]
[SP('state-or-province')]
[C('country')]
[WITHLABEL('label-name')]
[SIGNWITH([ CERTAUTH|SITE ] LABEL ('label-name'))]
[NOTBEFORE([DATE(yyyy-mm-dd)] [TIME(hh:mm:ss)])]
[NOTAFTER([DATE(yyyy-mm-dd)] [TIME(hh:mm:ss)])]
- CN = Common Name
- T = Title
- OU = Organizational Unit name
- O = Organization name
- L = Location
- SP = State or Province
- C = Country
- WITHLABEL = Label of the certificate
- NOTBEFORE = Date and time before which the certificate is not valid
- NOTAFTER = Date and time after which the certificate is not valid(ie expired)
- SIGNWITH = CERTAUTH or SITE with
- label-name = label of the signing certificate
For example:
RACDCERT ID (TESTUSER) GENCERT -
SUBJECTSDN (CN (‘MA01’) -
T (‘Personal Certificate for MA01’) -
OU (‘TEST’) -
O (‘IBM’) -
L (‘BANGALORE’) -
SP (‘KARNATAKA’) -
C (‘INDIA’) -
WITHLABEL (‘ibmWebSphereMQMA01’) -
SIGNWITH (CERTAUTH LABEL (‘CA01’)) -
NOTBEFORE([DATE(2000-12-20)] [TIME(12:00:00)])] -
NOTAFTER([DATE(2009-12-20)] [TIME(12:00:00)])]
Add or connect the certificates to the key ring:
RACDCERT ID(Userid) -
CONNECT(
[ID(userid) | SITE | CERTAUTH]
LABEL('label-name')
RING(ring-name)
[USAGE(PERSONAL | SITE | CERTAUTH)]
- ID = User ID of the channel initial address space, or the user ID owning the key ring
- LABEL = Name of the label of the certificate
- RING = Name of the key ring to which the certificate needs to be connected or added.
For example:
RACDCERT ID (TESTUSER) -
CONNECT (CERTAUTH LABEL ('CA01')
RING (MA01) USAGE (CERTAUTH))
RACDCERT ID (TESTUSER) -
CONNECT (ID (TESTUSER) LABEL ('ibmWebSphereMQMA01')
RING (MA01) USAGE(PERSONAL))
List a key ring
RACDCERT ID(userid) LISTRING(keyringname)
- ID = User ID of the channel initial address space, or the user ID owning the key ring.
- LISTRING = Name of the key ring to be listed
For example:
RACDCERT ID(MA01USR) LISTRING(MA01)
List certificates in a Key ring
RACDCERT CERTAUTH LIST(LABEL('CAcertificatelabelname'))
RACDCERT ID(userid) LIST(LABEL('Personalcertificatelabelname'))
- LABEL = Label of the certificate to be listed
For example:
RACDCERT CERTAUTH LIST(LABEL('CA01'))
RACDCERT ID(UserID) LIST(LABEL(‘ibmWebSphereMQMA01'))
Delete a key ring
RACDCERT ID(userid) DELRING(keyringname)
- ID = User ID of the channel initial address space, or the user ID owning the key ring.
- DELRING = Name of the key ring to be deleted.
For example:
RACDCERT ID(MA01USR) DELRING(MA01)
Delete a certificate from the key ring
RACDCERT CERTAUTH DELETE(LABEL('certificatelabelname'))
- LABEL = Label of the certificate to be deleted
For example, to delete a CA certificate:
RACDCERT CERTAUTH DELETE(LABEL('CA01'))
To delete a personal certificate:
RACDCERT ID(UserID) DELETE(LABEL('ibmWebSphereMQMA01'))
Export the certificate to the PS file
RACDCERT CERTAUTH
EXPORT(LABEL('label-name')) DSN(output-data-set-name)
[FORMAT(
CERTDER | CERTB64 | PKCS7DER
| PKCS7B64 | PKCS12DER | PKCS12B64
)]
- LABEL = Label name of the certificate to be exported
- DSN = Physical sequential dataset name where the certificate will be exported to.
For example:
RACDCERT CERTAUTH EXPORT
(- LABEL ('CA01')) -
DSN (' HLQ.SSLCA.MA01'') -
FORMAT (CERTDER)
- HLQ = High Level Qualifier. Check with your system administrator to know the value of HLQ on your system
Import a certificate from the PS file to the key ring
RACDCERT ID(userid) ADD(dataset-name) TRUST WITHLABEL('label-name')
- ID = User ID of the channel initial address space, or the user ID owning the key ring
- ADD = Physical sequential dataset name where the certificate is stored and is imported from.
- WITHLABEL = Label name of the certificate that is being imported
For Example:
RACDCERT ID(MA01USR) ADD('HLQ.SSLCA.MA01) TRUST WITHLABEL('CA01')
For more information on the RACDCERT command please refer to the product documentation.
结论
This tutorial showed how you can use the RACF panels on z/OS to:
- Create a key ring.
- Create CA and personal certificates.
- Add or connect the certificates to the key ring.
- List and delete the key rings and certificates.
Using these features, you can quickly configure SSL on z/OS, without investing in new skills. This tutorial also showed you various error scenarios to help you to debug specific problems during SSL setup.
翻译自: https://www.ibm.com/developerworks/websphere/tutorials/0908_muragod/index.html
websphere mq