Не удается подключиться к очереди publi c с использованием SSL через версию pymqi для python 3 - PullRequest
1 голос
/ 12 марта 2020

Мне удалось установить sh подключение к очереди c publi с более старой версией pymqi для Python2, используя следующий код python:

import logging

import pymqi

logging.basicConfig(level=logging.INFO)

queue_manager = 'QM1'
channel = 'BZU.UAT.CHNL'
host = '245.274.46.56'
port = '1416'
queue_name = 'BZU.UAT.QUEUE'
conn_info = '%s(%s)' % (host, port)
ssl_cipher_spec = 'TLS_RSA_WITH_3DES_EDE_CBC_SHA'
key_repo_location = 'D:\\App\\BZU\\keydb\\key'
message = 'Hello from Python!'

cd = pymqi.CD()
cd.ChannelName = channel
cd.ConnectionName = conn_info
cd.ChannelType = pymqi.CMQC.MQCHT_CLNTCONN
cd.TransportType = pymqi.CMQC.MQXPT_TCP
cd.SSLCipherSpec = ssl_cipher_spec
cd.UserIdentifier = 'BZU'
cd.Password = ''

sco = pymqi.SCO()
sco.KeyRepository = key_repo_location

qmgr = pymqi.QueueManager(None)
qmgr.connect_with_options(queue_manager, cd, sco)

put_queue = pymqi.Queue(qmgr, queue_name)
put_queue.put(message)

get_queue = pymqi.Queue(qmgr, queue_name)
logging.info('Here is the message again: [%s]' % get_queue.get())

put_queue.close()
get_queue.close()
qmgr.disconnect()

К сожалению, это код не работает с pymqi версии 1.9.3 для Python 3. В этом случае я получаю следующее сообщение об ошибке:

Traceback (most recent call last):
  File ".\mq_conn_with_ssl.py", line 33, in <module>
    qmgr.connect_with_options(queue_manager, cd, sco)
  File "D:\App\BZU\arn-basis-common\py\pymqi\__init__.py", line 1347, in connect_with_options
    raise MQMIError(rv[1], rv[2])
pymqi.MQMIError: MQI Error. Comp: 2, Reason 2393: FAILED: MQRC_SSL_INITIALIZATION_ERROR

Мне пришлось преобразовать все строки в этом коде в байты, так как программа требует все строки в байтах. Пример:

queue_manager = b'QM1 '


В ваших комментариях вы обнаружили следующую ошибку в файле AMQERR01.LOG:

AMQ9716: Remote SSL certificate revocation status check failed for channel 'BZU.UAT.CHNL'.

1 Ответ

0 голосов
/ 12 марта 2020

Сравните файл mqclient.ini на рабочем и нерабочем серверах на предмет различий в разделе SSL:, из-за которого проверка OCSP не будет выполнена.

Расположение mqclient.ini файл можно найти на странице Центра знаний IBM MQ IBM MQ> Конфигурирование> Конфигурирование соединений между сервером и клиентами> Конфигурирование клиента с помощью файла конфигурации> Расположение файла конфигурации клиента . См. Сводку ниже:

  1. Местоположение, указанное в переменной среды MQCLNTCF.
  2. Файл с именем mqclient.ini в текущем рабочем каталоге приложения.
  3. Файл с именем mqclient.ini в каталоге данных IBM MQ для систем Windows, UNIX и Linux.
  4. Файл с именем mqclient.ini в стандартном каталоге, соответствующем платформа и доступна для пользователей:

Документацию по SSL разделу mqclient.ini можно найти на странице центра знаний IBM MQ IBM MQ> Конфигурирование > Настройка соединений между сервером и клиентами> Настройка клиента с помощью файла конфигурации> Раздел SSL файла конфигурации клиента . См. Резюме ниже:

OCSPAuthentication = ДОПОЛНИТЕЛЬНО | ТРЕБУЕТСЯ | WARN

OCSPCheckExtensions = YES | NO

SSLHTTPProxyName = строка

...