websphere mq_在WebSphere MQ和WebSphere Message Broker之间设置基于SSL的通信

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小时

关键字和定义

为了您的方便,本节提供了MQ信息中心的一些关键术语定义

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

在下面的部分中,您将学习如何创建钥匙圈。 可以考虑使用钥匙圈来存放数字证书。 这些证书用于确定客户端系统的可信赖性。

创建钥匙圈

  1. 选择选项R(RACF) ,如图1所示,然后按Enter键。
    图1. WMQI更改团队菜单
    在WMQI更改团队菜单上输入R
  2. 选择选项7(数字证书和密钥环) ,如图2所示,然后按Enter键。
    图2.服务选项菜单
    在服务选项菜单上输入7
  3. 选择选项6(“密钥环服务”) ,如图3所示,然后按Enter。
    图3.服务选项菜单
    在服务选项菜单上输入6
  4. 选择选项1(创建一个新的钥匙圈) ,在“ 用户”字段中输入用户名(在这种情况下为MA01USR ),如图4所示,然后按Enter。
    图4.数字证书密钥环服务
    在数字证书密钥环服务上输入1
  5. 输入MA01作为环的名称,如图5所示,然后按Enter。
    图5.数字证书密钥环名称
    输入MA01作为数字证书密钥环名称
  6. 图6显示密钥环已成功创建并添加到RACF数据库。
    图6.确认已添加钥匙圈
    钥匙圈MA01已成功添加
  7. 按F3键,直到返回主菜单。

在下一部分中,您将学习使用RACF创建CA证书。

创建客户端身份验证(CA)证书

  1. 如图7所示,选择选项1(生成证书和公用/专用密钥对) ,然后按Enter。
    图7.数字证书和相关服务
    在数字证书和相关服务上输入选项1
  2. 输入X以请求CA证书,如图8所示,然后按F8键。 (F8是向下滚动功能键。)
    图8.生成数字证书
    为证书类型选择证书颁发机构
  3. 输入First.M.LastFirst.M.Last标题的 Software Engineer组织单位的 MVS ,如图9所示:
    图9.生成数字证书(更多选项)
    生成数字证书的选项
  4. 输入CA证书的开始日期/时间结束日期/时间的值,如图10所示。这些值基本上表示证书的有效性。 输入“ CA01”作为CA证书的标签名称 ,然后按F8。
    图10.生成数字证书(更多选项)
    有关生成数字证书的更多选项
  5. 通过选项Certsign输入X,如图11所示。如果未收到错误消息,则表明CA证书已成功创建并已添加到RACF数据库。
    图11.生成数字证书(更多选项)
    选择证书
  6. 要列出CA证书CA01 ,请选择选项4以列出CA证书,如图12所示,然后按Enter。
    图12.数字证书和相关服务
    在数字证书和相关服务上选择4
  7. 输入X 在“ 证书类型”字段中的“证书 颁发机构”下,然后选择选项3 ,如图13所示。按Enter键。
    图13.数字证书服务主面板
    为证书类型选择证书颁发机构
  8. 输入CA01作为证书的标签,然后选择选项1 ,如图14所示。按Enter键。
    图14.数字证书列表过滤面板
    在“数字证书列表过滤”面板上输入1
  9. 图15显示了证书CA01的内容。 按F8查看有关证书的更多详细信息。
    图15.更改状态/删除数字证书
    CA01证书的内容

在下一节中,您将学习创建由CA证书签名的个人证书。 签名CA证书是您在上一节中创建的带有CA01标签的证书。

创建个人证书

  1. 选择选项1 ,如图16所示,然后按Enter。
    图16.数字证书和相关服务
    在数字证书和相关服务上选择1
  2. 输入您要用来生成个人证书的个人用户ID。 选择“ 证书颁发机构”作为“ 签名证书”类型,并为标签输入CA01 ,如图17所示。按F8向下滚动。
    图17.生成数字证书
    在“生成数字证书”面板上输入值
  3. 输入MAO1.PERSONAL作为您选择的公用名 ,如图18所示。按F8向下滚动。
    图18.生成数字证书(更多选项)
    输入MAO1.PERSONAL作为通用名称
  4. 标签字段中输入个人证书的名称。 常用格式为ibmWebSphereMQ XXXX ,其中XXXX代表四字母队列管理器名称。 选择“ 握手 ”选项,如图19所示,然后按Enter。
    图19.生成数字证书(更多选项)
    在生成数字证书上输入更多选项

将证书连接到钥匙圈

接下来,我们需要将CA证书和个人证书都添加到密钥环中,因为队列管理器在与客户端系统执行SSL握手时会查看其密钥环中的证书列表。

将CA证书CA01连接到钥匙圈MA01

在本部分中,您将学习如何将CA证书连接(添加)到钥匙圈。

  1. 如图20所示,选择选项6 (创建,列出或删除整个钥匙圈或将证书连接到钥匙圈或从中删除证书) ,然后按Enter。
    图20.数字证书和相关服务
    在数字证书和相关服务上选择6
  2. 选择选项4以将数字证书连接到钥匙圈,如图21所示,然后按Enter。
    图21.数字证书密钥环服务
    在数字证书密钥环服务上选择4
  3. 为环名输入MA01 ,然后为“ 证书类型”选择“ 证书颁发机构”选项。 输入CA01 对于Label name ,选择Certificate Authority作为使用证书,如图22所示,然后按Enter。
    图22.将数字证书连接到钥匙圈
    输入铃声名称和证书类型。
  4. 图23显示CA证书CA01已成功连接到密钥环MA01。
    图23.数字证书密钥环服务
    证书已成功连接到钥匙圈

在下一部分中,您将学习将个人证书连接(添加)到钥匙圈。

将个人证书ibmWebSphereMQMA01连接到钥匙圈MA01

  1. 输入用于创建个人证书( MA01USR )的用户ID,然后选择选项4 ( 将数字证书连接到钥匙圈 ),如图24所示,然后按Enter。
    图24.数字证书密钥环服务
    输入用户标识并选择选项4。
  2. 输入振铃名称MA01,然后输入用户ID MA01USR作为证书类型 (因为这是个人证书)。 接下来,为Label name输入ibmWebsphereMQMA01 ,为Usage字段选择Personal ,如图25所示,然后按Enter。
    图25.将数字证书连接到钥匙圈
    输入用于将数字证书连接到钥匙圈的值
  3. 图26显示个人证书ibmWebsphereMQMA01已连接到密钥环MA01。
    图26.数字证书密钥环服务
    证书已成功连接到钥匙圈

在下一节中,您将学习列出所有连接(添加到)钥匙圈的证书。

列出连接到钥匙圈的证书

  1. 选择选项3 (列出现有的钥匙圈),为用户ID输入MA01USR ,如图27所示,然后按Enter。
    图27.数字证书密钥环服务
    在“数字证书密钥环服务”面板上输入3
  2. 输入MA01作为钥匙圈名称,如图28所示,然后按Enter。
    图28.数字证书列表密钥环服务
    输入MA01作为钥匙圈名称
  3. 图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)文件中,请按照下列步骤操作。

  1. 使用如图30所示的参数创建一个PS文件。该文件将用于提取CA证书CA01。
    图30.数据集信息
    常规数据=当前分配,管理类别= STANDARD,分配的磁道= 5,存储类别= STANDARD,分配的范围= 1,卷序列= PSP028,设备类型= 3390,数据类别= **无**,组织= PS,已使用轨道= 1,记录格式= VB,已用扩展区= 1,记录长度= 84,块大小= 27998,第一个扩展区轨道= 5,辅助轨道= 5,数据集名称类型= SMS可压缩=否
  2. 选择选项3 (将证书写入数据集),如图31所示,然后按Enter。
    图31.数字证书和相关服务
    在数字证书和相关服务上输入3
  3. 由于我们正在将CA证书转移到Windows计算机,因此为证书类型选择选项证书颁发机构 ,如图32所示。输入标签名称为CA01,然后输入想要提取的证书所在的数据集名称。 Base64编码的X.509证书的选项这是提取的证书的默认格式类型。 按Enter键。
    图32.将证书写入数据集
    输入将证书写入数据集面板的值
  4. 使用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:

  1. 使用Windows资源管理器或命令提示符,创建一个名为C:\MQSSL\MA01的目录:
    C:\>md MQSSL
    C:\>cd MQSSL
    C:\MQSSL>md MA01

    工具箱的密钥存储库将在C:\MQSSL\MA01

  2. 将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对您的系统的价值。

  3. 打开Windows命令提示符,然后输入命令strmqikm 。 这将打开一个GUI。
  4. 通过选择Key Database File-New为Toolkit创建一个密钥存储库,并使用以下参数创建存储库:
    • 密钥数据库类型: JKS
    • 档案名称: key.jks
    • 位置: C:\ MQSSL \ MA01

    注意:密钥数据库类型很重要。 它必须是JKS密钥存储库,因为工具包是MQ Java客户端,默认情况下使用JKS存储库。

  5. 在密码提示下,两次输入changeit作为此存储库的密码。

    这是JKS存储库的默认密码。 不会在生产系统中使用它,但是对于本练习,让Toolkit采用默认值会更容易。 不要忘记密码,因为以后需要访问密钥库。 您可以查看默认情况下提供的CA证书列表。

  6. 单击添加 (右上角)。
  7. 在对话框提示中,输入MA01.arm 作为证书文件名,并输入C:\MQSSL\MA01\ 。 单击确定。
  8. 当提示您输入证书的标签时 ,请输入创建CA证书时给出的标签名称,即 CA01 。 这一点非常重要,因为标签名称的任何更改都将不允许工具包连接到队列管理器。 单击确定。
  9. 证书现在显示在“签署者证书”存储库中。 关闭文件(“ 密钥数据库文件-关闭” )。 关闭iKeyMan GUI。

因此,现在我们可以执行一种单向SSL通信,其中队列管理器MA01(位于z / OS平台上)将证书提供给Toolkit。 我们需要进行两项更改:

  1. 更改队列管理器以引用密钥集存储库。
  2. 更改通道SYSTEM.BRK.CONFIG以使用正确的SSCIPH值。

注意:您可以使用SYSTEM.BRK.CONFIG通道将z / OS队列管理器连接到Windows Toolkit。

定义密钥环并创建证书并将其连接到密钥环后,您必须更改队列管理器,以便它使用密钥环获取SSL配置详细信息。

更改队列管理器MA01以引用密钥集存储库

  1. 使用MQ面板(请与系统管理员联系以进行访问),更新SSL密钥存储库字段以引用密钥环MA01
  2. 选择选项3 (更改),然后为对象类型输入Manager 。 输入MA01作为队列管理器的名称,如图33所示,然后按Enter。 请注意,菜单名称在不同机器上可以不同。
    图33. IBM WebSphere MQ for z / OS-主菜单
    在BM WebSphere MQ for z / OS上选择3-主菜单
  3. 显示图34。
    图34.更改队列管理器-1
    更改队列管理器-1个面板
  4. 多次按F8键,直到到达图37中的面板。输入MA01作为SSL密钥存储库(即密钥环),并为SSL服务器任务字段指定8 (这表示将开始服务8个SSL服务器任务) SSL通信),如图35所示。按Enter键。
    图35.更改队列管理器-7
    为SSL密钥存储库输入MA01,为SSL服务器任务输入8。
  5. 图36显示队列管理器MA01已成功更改为使用SSL工具。
    图36.更改队列管理器– 7(更多选项)
    CSQ9022I MA01 CSQMAMMS'ALTER QMGR'正常完成

    或者,您可以使用此命令来更改所有队列管理器:

    Qmgrname ALTER SSLKEYR(‘MA01’) SSLTASKS(8)

    注意:上述更改只是临时更改。 重新启动/重新创建队列管理器后,必须重复上述更改。

  6. 重新启动通道启动器。 不要忘记启动监听器。

清单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

  1. 使用MQ面板,选择选项3 (更改)以更改通道属性。 为对象类型选择Channel ,然后为队列管理器名称输入MA01 ,如图37所示。按Enter键。
    图37. IBM WebSphere MQ for z / OS-主菜单
    设置对象类型和队列管理器名称
  2. 更新SSL密码规范字段,使其具有NULL_SHA值和N 所需的SSL证书 (因为我们使用的是单向通信),如图38所示。
    图38.更改服务器连接通道-3
    设置SSL密码规范和SSL证书必填字段
  3. 接下来,我们需要更新Domain连接设置,如图39所示。
    图39.更新密码套件,密钥库和信任库
    将密码套件设置为SSL_RSA_WITH_NULL_SHA,并将密钥存储和信任存储都设置为C:\ MQSSL \ MA01 \ key.jks
  4. 现在,尝试将工具包域重新连接到z / OS队列管理器。 连接应该成功。

建立双向(相互)通信

既然通信已经可以正常工作,那么在下一节中,您将学习如何执行相互通信,这是从Windows平台上的Message Broker到z / OS队列管理器的SSL通信。

在Windows上创建证书

  1. 在Windows命令提示符下,通过运行strmqikm命令启动iKeyMan GUI。 选择“ 密钥数据库文件-打开”,然后在对话框提示符下设置以下值:
    • 档案名称: key.jks
    • 位置: C:\MQSSL\MA01
  2. 单击确定 。 在密码提示下,输入changeit
  3. 切换到“ 个人证书”存储库 (在右上角附近的下拉列表),然后单击“ 新自签名” (在右下角)。
  4. 输入证书的以下值:
    • 密钥标签: toolkit
    • 通用名称:将包含Windows框的IP地址>

    将其他所有内容都设置为默认值,然后单击“ 确定” 。 新证书将出现在“个人证书”列表中。

  5. 现在,我们需要提取证书的证书颁发机构部分,并将其安装在Queue Manager存储库中。 该过程与之前相同,但是相反。 单击提取证书(右下角),然后使用以下值提取CA证书:
    • 证书文件名: toolkit.arm
    • 位置: C:\MQSSL\MA01

    单击确定 。 这将在C:\MQSSL\MA01创建一个名为toolkit.arm的文件。

  6. 将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.更新密码套件,密钥库和信任库
组织= PS,记录格式= VB,记录长度= 84,块大小= 27998

接下来,您需要将Windows机器中提取的证书添加到z / OS机器上的RACF数据库中。 请按照以下步骤将证书添加到RACF数据库:

  1. 选择选项4 ,如图41所示,然后按Enter:
    图41.数字证书和相关服务
    在“数字证书和相关服务”面板上选择4
  2. 选择选项1 ,为拥有钥匙圈MA01,的用户ID输入MA01USR ,如图42所示。按Enter键。
    图42.添加数字证书
    输入MA01USR作为拥有钥匙圈MA01的用户ID
  3. 输入hlq .SSL.TOOL作为数据集名称,并输入toolkit作为在Windows计算机上创建的证书的标签名称。 为信任状态选择选项T ,如图43所示,然后按Enter。 hlq是系统专用的高级限定符。
    图43.添加数字证书
    在“添加数字证书”面板上输入值

将Windows证书连接到z / OS上的MA01钥匙圈

  1. 选择选项1 ,输入MA01USR作为用户ID,如图44所示,然后按Enter。
    图44.数字证书密钥环服务
    选择选项1并输入MA01USR
  2. 输入“ 环名称”MA01 ,“ 证书类型”为用户ID MA01USR 。 对于证书的标签名称 ,输入toolkit,然后在“ 用法”字段中选择“ 个人 ”,如图45所示。按Enter键。
    图45.将数字证书连接到钥匙圈
    输入将数字证书连接到钥匙圈的值
  3. 图46显示带有标签名称toolkit的证书已连接到钥匙圈MA01
    图46.数字证书密钥环服务
    证书已成功连接到钥匙圈

您可以使用下一节中所述的“列出证书”功能来确认证书已添加到钥匙圈中。

列出连接到MA01钥匙圈的所有证书

  1. 选择选项3 为用户ID输入MA01USR ,如图47所示,然后按Enter。
    图47.数字证书密钥环服务
    在“数字证书密钥环服务”面板上选择3
  2. 输入如图48所示的钥匙圈名称MA01 ,然后按Enter。
    图48.数字证书列表密钥环服务
    输入钥匙圈名称MA01
  3. 图49显示了连接到密钥环MA01的所有证书。
    图49.图49.列出环名称服务
    铃声名称列表
  4. 确保工具箱与配置管理器断开连接(如果没有断开连接)。

  5. 输入以下命令,将SSLCAUTHREQUIRED或者,您可以使用MQ面板进行此更改。
    Command -> ALT CHL(SYSTEM.BKR.CONFIG) CHLTYPE(SVRCONN) SSLCAUTH(REQUIRED)

    工具包中无需更改。

  6. 关闭工具包,停止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
  1. 将工具包上的Cipher Suite的值更新为SSL_RSA_WITH_DES_CBC_SHA ,如图50所示。
    图50.更新SSLCIPH值
    将密码套件设置为SSL_RSA_WITH_DES_CBC_SHA
  2. 更新队列管理器上的SSCIPH值。 使用MQ面板,选择选项3并输入以下值(也在图51中)。 按Enter键。
    • 对象类型:通道
    • 姓名 *
    • 连接名称: MA01
    • 目标队列管理器: MA01
    • 动作队列管理器: MA01
    图51.更新通道上的SSLCIPH值
    设置字段以更新队列管理器上的SSCIPH
  3. 使用选项3更改频道,选择频道SYSTEM.BKR.CONFIG ,如图52所示。按Enter键。
    图52.更新通道上的SSLCIPH值
    在“列表频道”面板上选择3
  4. 图53显示了用于更改服务器连接通道的第一个面板:
    图53.更改服务器连接通道
    更改服务器连接通道
  5. 多次按F8直到到达图54中的面板(“ Alternate a Server-Connection Channel – 3” ) 。 理想情况下,您应该为SSL密码规范字段指定值DES_SHA_EXPORT ,但是为了说明SSCIPH值的无效组合的错误情况,我们给出了NULL_SHA的值。 将必需的SSL证书设置为Y ,然后按Enter。
    图54.更改SSL密码规范
    将SSL密码规范设置为NULL_SHA
  6. 图55显示了尝试将WebSphere Message Broker工具箱连接到z / OS队列管理器时的错误消息。
    图55.更新通道上的SSLCIPH值
    错误代码2059和2009

发现过期的证书

我们为另一个队列管理器MA02创建了过期的CA证书CA02。 过期的证书的End Date已经过去。 请按照以下步骤查看过期的证书:

  1. 选择选项R ,如图56所示,然后按Enter。
    图56. WMQI更改团队菜单
    WMQI更改团队菜单上的Selectign R
  2. 选择选项7 ,如图57所示,然后按Enter。
    图57. RACF –服务选项菜单
    在RACF –服务选项菜单上选择7
  3. 选择选项4 ,如图58所示,然后按Enter。
    图58.数字证书和相关服务
    在“数字证书和相关服务”面板上选择4
  4. 选择选项3Certificate Authority作为证书类型 ,如图59所示。按Enter。
    图59.数字证书服务主面板
    将证书类型设置为证书颁发机构
  5. 选择1并输入CA02作为CA证书的标签名称,如图60所示,然后按Enter。
    图60.数字证书列表过滤面板
    将标签名称设置为CA02
  6. 图61显示了CA证书,其中“结束日期”为过去的日期。
    图61.更改状态/删除数字证书
    结束日期是2009/04/02 21:00:00
  7. 图62显示了一条错误消息,指出由于证书已过期而无法建立连接。
    图62.由于证书过期而导致的错误
    BIP0915E:Message Brokers工具包无法连接到队列管理器MA02
  8. 清单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.由于证书无效而导致的错误
BIP10915E:Message Brokers工具包无法连接到队列管理器MA02

清单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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值