在Node js中实现IBM MQ中的SSL



尝试从IBM MQ 9发布和订阅消息,该消息具有用于SSL连接的密码套件、用户id、密码、mykey.kdb文件。我们能够通过SSL与java进行连接。但想要对nodejs做同样的事情。在尝试这样做的同时,我们得到了SSL_INITIALISATION_ERROR。在AMQERR01.LOG中,我们看到以下错误块:

AMQ6090I:MQM could not display text for error 3456322
COMMENTINSERT3(SSLCIPH(' ') -> SSLCIPH(???))

有人能帮我使用NOde-js连接MQ吗?

如果TLS与Java一起工作,那么很可能服务器配置正确。

要在TLS模式下运行Node.js MQ客户端,需要设置密码规范并标识客户端密钥位置的代码。

const KEY_REPOSITORY = "../keys/clientkey";
const CIPHER = "TLS_RSA_WITH_AES_128_CBC_SHA256";

var cno = new mq.MQCNO();
// code that sets up cno object
// like Options and MQCSP credentials

var cd = new mq.MQCD();
// And then fill in relevant fields for the MQCD
// like ChannelName and ConnectionName
// If running in TLS Mode 
cd.SSLCipherSpec = CIPHER;
cd.SSLClientAuth = MQC.MQSCA_OPTIONAL;

var sco = new mq.MQSCO();
sco.KeyRepository = KEY_REPOSITORY;
// And make the CNO refer to the SSL Connection Options
cno.SSLConfig = sco;

对于java,您最有可能使用的是.jks客户端密钥库。对于基于MQI的客户端(Node、Python、Go、C(,您需要一个密钥数据库和存储文件。

由于您需要安装MQI客户端,因此可以运行runmqakm工具来创建它们:


runmqakm -keydb -create -db clientkey.kdb -pw tru5tpassw0rd -type pkcs12 -expire 1000 -stash

并将服务器的公钥证书导入客户端密钥数据库

runmqakm -cert -add -label QM1.cert -db clientkey.kdb -pw tru5tpassw0rd -trust enable -file key.crt

请注意,我已经调用了密钥库和存储库clientkey。您可以随心所欲地调用它们,但在node.js代码集中
sco.KeyRepository = KEY_REPOSITORY;

指向您的clientkey

最新更新