Подключение к Remote Queue Manager с компьютера AIX с использованием SSL - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь подключиться к удаленному QM, используя SSL с компьютера AIX.

Я настроил свой QM и канал, чтобы разрешить соединения SSL. SSL Cipher Spec

Я создал KeyStore на сервере (машина, содержащая вышеупомянутый канал QM +), экспортировал самозаверяющий сертификат и импортировал сертификат с клиента. Self signed Cert - Server Signed Cert - Client

Я использовал GSK на компьютере AIX для создания хранилища ключей, в котором присутствуют как самоподписанный, так и подписывающий сервер. Client Side Certs

Код клиента, как показано ниже, при попытке подключения к QM. Этот код работает в Windows, однако не работает в AIX, что заставляет меня думать, что это проблема с сертификатом, которую я сделал неправильно, а не проблема кода.

CipherSpec - TLS_RSA_WITH_AES_256_CBC_SHA256 и расположение хранилища ключей правильное.

m_QChannel.setChannelName(m_strChannelName);
    m_QChannel.setConnectionName(m_pParent->GetName());
    m_QChannel.setTransportType( MQXPT_TCP );

    if (!m_strCipherSpec.IsEmpty())
    {
        m_QChannel.setSslCipherSpecification(m_strCipherSpec);

        if (!m_strKeyStore.IsEmpty())
        {
            m_QMgr.setKeyRepository(m_strKeyStore);
        }
        else
        {
            CString strKeyStore = getenv("MQSSLKEYR");
            m_QMgr.setKeyRepository(strKeyStore);
        }
    }

    //Set the queue manager options
    m_QMgr.setName(m_strName);
    m_QMgr.setChannelReference(&m_QChannel);

    if (!m_QMgr.connect()) 
    {
        m_iLastError =m_QMgr.reasonCode( ) ;

        return false;         
    }

Однако, когда я пытаюсь запустить приложение для подключения, я получаю сообщение об ошибке MQRC 2393. При проверке журналов ошибок он жалуется на сертификаты.

Error 2393 Error Log

Я пытался перезапустить QM, перезапустить канал, обновить SSL, но все безуспешно. Что я пропустил?

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 03 июля 2018

Текущий ярлык сертификата клиента, который у вас есть, ibmwebspherebldaix02.

Для клиентского приложения MQI метка сертификата по умолчанию, которую будет искать MQ, - это строка ibmwebspheremq, за которой следует имя пользователя, под которым выполняется приложение, в нижнем регистре.

В этом случае он не соответствует первой части требования по умолчанию, поскольку он начинается с ibmwebsphere и пропускает mq, а затем следует bldaix02.

У вас есть несколько вариантов:

  1. Если пользователь bldaix02, вы можете переименовать сертификат в хранилище ключей на ibmwebspheremqbldaix02. Если это не имя пользователя, переименуйте сертификат в ibmwebspheremq<username> все строчными буквами. Эта опция должна работать со всеми версиями продукта IBM MQ.
  2. Если вы используете IBM MQ v7.0 - 7.5 ( все они не поддерживаются ), вы можете указать MQ использовать сертификат по умолчанию, задав для переменной среды AMQ_SSL_ALLOW_DEFAULT_CERT любое значение до запуск приложения или, если вы делаете это внутри программы, сделайте это перед вызовом connect. Обратите внимание, что эта функция была удалена в начальных версиях IBM MQ v8.0 и v9.0, но позже была добавлена ​​в версии 8.0.0.7 и 9.0.0.1 и более поздних версиях.
  3. Если вы используете IBM MQ v8.0 или новее ( вы должны это делать, поскольку это единственные поддерживаемые в настоящее время версии ), вы можете указать MQ искать другую метку. Вы можете сделать это четырьмя способами:

    1. Если используется CCDT, установите атрибут CERTLABL канала CLNTCONN.
    2. Программно установить атрибут CertificateLabel в MQSCO
    3. Установите переменную среды MQCERTLABL перед запуском приложения или, если вы делаете это внутри программы, сделайте это перед вызовом connect.
    4. Использование атрибута CertificateLabel раздела SSL: в файле mqclient.ini.
      Примечание: Существуют различные способы, которыми MQ находит mqclient.ini, и они подробно описаны в Центр знаний IBM MQ и различные ответы здесь, на StackOverflow.

Более подробную информацию можно найти по следующим ссылкам:

  1. Примечание: указание ИД пользователя в метке сертификата SSL для клиента MQ
  2. Центр знаний IBM MQ 8.0.0> IBM MQ> Безопасность> Обзор безопасности> Механизмы защиты IBM MQ> Протоколы безопасности в IBM MQ> Хранилище ключей SSL или TLS> Метки цифровых сертификатов, понимание требований
...