Bienvenue sur le site Demey Consulting

Luc-Michel Demey

Consultant indépendant
Architecte Technique Senior - Expert WebSphere / MQSeries / Broker

vous propose son assistance dans les domaines suivants :

  • Architecture
  • Formation
  • Infrastructure
  • Sécurité
  • Expertise
  • Développement

Contact : info @ demey-consulting.fr
vCard Demey Consulting
Tél. : +33 608 755 655


Demey Consulting
72, avenue du Général de Gaulle
94170 Le Perreux sur Marne - France
N° Siren : 438 797 276 - Code APE : 6202A
N° de TVA intracommunautaire : FR87 438 797 276
Organisme de formation enregistré sous le numéro 11940595694

PNG - 1.4 ko

lundi 15 octobre 2018
par Luc-Michel Demey

MQ Console - Partie 3 : Sécurisation SSL

Contexte

Ce document fait partie d’une série de 3 articles sur la mise en œuvre de IBM MQ Console :

MQ Console est une nouvelle interface d’administration pour IBM MQ disponible progressivement à partir de la version 9.0.1. Depuis MQ version 9.1, elle dispose de toutes les fonctions nécessaires pour administrer simplement un réseau de Queue Managers. Elle se présente sous la forme d’une application web accessible depuis un navigateur.

Elle ne remplace pas MQ Explorer car elle ne dispose pas de toutes ses fonctions, mais elle couvre plus de 80 % des usages pour l’administration simple des Queue Managers.
L’application Web peut être configurée comme l’utilisateur le souhaite (approche Dashboard).

Utilisation de MQ Console avec des certificats SSL signés par une CA

Il est possible de configurer le serveur mqweb (qui gère MQ Console) pour utiliser https.
Dans ce cas, un certificat auto-signé pour le serveur mqweb est automatiquement créé par MQ, avec localhost comme nom de serveur, et une durée de validité de 1 an.

PNG - 33.3 ko
Certificat auto-signé

Ceci génère des alertes au moment de la connexion à la console, en particulier SEC_ERROR_UNKNOWN_ISSUER :

PNG - 62.2 ko
Connexion non sécurisée

Cette configuration par défaut n’est donc pas valable pour un environnement de production.
La solution est d’installer :

  • Dans le serveur mqweb, un certificat signé par une CA
  • Dans le navigateur, le certificat de la CA qui a signé celui du serveur mqweb

Certificate pour mqweb

Le serveur mqweb utilise un magasin de certificats de type JKS. Ce magasin doit contenir :

  • Le certificat personnel et la clé privée pour mqweb
  • Le certificat de la CA qui a signé celui de mqweb

Le certificat personnel a les caractéristiques suivantes :

  • Clé publique : 1024 or 2048 RSA
  • Algorithme de signature : sha256RSA
  • Hash algorithm : sha256
  • CN = hostname du serveur mqweb (obligatoire)
  • SAN (Subject Alternative Name) : hostname du serveur mqweb (obligatoire)
  • FriendlyName (or label) : doit être enseigné, valeur au choix, par exemple le « short hostname » du serveur Note : En l’absence de champ SAN, le navigateur affichera une erreur ERR_CERT_COMMON_NAME_INVALID.

Exemple avec le hostname = mq91a sur un serveur Linux

  • CN = mq91a
  • SAN (Subject Alternative Name) : mq91a
  • FriendlyName (ou label) : mq91a

Le certificat a les caractéristiques suivantes :

PNG - 10.9 ko
Libellé certificat
PNG - 20.3 ko
Certificat signé par la CA

Magasin de certificats pour mqweb

Pour générer le magasin de certificats de MQ Console, les éléments suivants sont nécessaires :

  • Certificat de CA
  • Certificat personnel pour le serveur mqweb
  • Clé privée du certificat personnel

Paramètres utilisés dans les commandes ci-dessous :

  • Nom du magasin : dc_console.jks
  • Mot de passe du magasin : magpass
  • Fichier du certificat de CA : CA-DC-2018A.crt
  • Certificat personnel pour le serveur mqweb : mq91a.p12 (contient le certificat et la clé privée)

Création et remplissage du magasin :

PNG - 6.7 ko
runmqckm

Installation du magasin sur le serveur

Dans un souci de standardisation, les magasins de certificats sont stockés dans /vat/mqm/mags.

Les différentes étapes à réaliser sont les suivantes :

  • Créer (si necessaire) /var/mqm/mags
  • Uploader le fichier dc_console.jks dans /var/mqm/mags
  • Ajuster les droits du fichier et propriétaire du fichier si nécessaire :
    • chmod 664 dc_console.jks
    • chown mqm:mqm dc_console.jks

Le magasin de certificats doit avoir les droits suivants :

Modification du fichier mqwebuser.xml file

Le fichier mqwebuser.xml doit être modifié pour utiliser le nouveau magasin de certificats. Ce fichier est situé en /var/mqm/web/installations/Installation1/servers/mqweb/.

Editer le fichier mqwebuser.xml file et localiser le bloc suivant :

<!--
<keyStore id="defaultKeyStore" location="key.jks" type="JKS" password="password"/>
<keyStore id="defaultTrustStore" location="trust.jks" type="JKS" password="password"/>
<ssl id="thisSSLConfig" clientAuthenticationSupported="true" keyStoreRef="defaultKeyStore" serverKeyAlias="default" trustStoreRef="defaultTrustStore" sslProtocol="TLSv1.2"/>
<sslDefault sslRef="thisSSLConfig"/>
-->

Décommenter le bloc et modifier ainsi les paramètres :

  • location : chemin + nom du magasin de certificats
  • password : mot de passe encoté du certificate (voir plus bas)
  • serverKeyAlias : label du certificate personnel du serveur mqweb

Resultat :

<keyStore id="defaultKeyStore" location="/var/mqm/mags/dc_console.jks" type="JKS" password="{xor}Mj44Lz4sLA=="/>
<keyStore id="defaultTrustStore" location="/var/mqm/mags/dc_console.jks" type="JKS" password="{xor}Mj44Lz4sLA=="/>
<ssl id="thisSSLConfig" clientAuthenticationSupported="true" keyStoreRef="defaultKeyStore" serverKeyAlias="mq91a" trustStoreRef="defaultTrustStore" sslProtocol="TLSv1.2"/>
<sslDefault sslRef="thisSSLConfig"/>

Encodage des mots de passe

L’outil securityUtility, present dans /opt/mqm/web/bin permet d’encoder une chaîne de caractères, par exemple un mot de passe. C’est de cette manière que les mots de passe du magasin de certificats ont été encodés.

Usage:
./securityUtility encode magpass
        {xor}Mj44Lz4sLA==

Installation du certificat de CA dans le navigateur

Afin que le certificat du serveur mqweb soit accepté sans alerte de sécurité, il ajouter le certificat de la CA (cellui qui a signé le certificat personnel du serveur) dans le trusted root store du navigateur.

Redémarrage et test

Pour redémarrer mqserver, il faut exécuter les commandes suivantes :

  • endmqweb
  • strmqweb
  • dspmqweb L’écran de login d’ IBM MQ Console login s’affiche maintenant sans aucune alerte :
    PNG - 15.1 ko
    Connection MQ Console

(c) Luc-Michel Demey - Octobre 2018.

PNG - 1.4 ko

Brèves

19 novembre - IBM MQ 9.1 FixPack 1

IBM annonce ce jour le premier FixPack pour MQ version 9.1

21 septembre - Annonce du Fix Pack 9.0.0.9 pour WAS 9

IBM annonce ce jour le FixPack 9 pour WAS 9.0.0.

20 septembre - Perf Report pour MQ 9.1 Linux

Le rapport de Performance Report pour MQ 9.1 Linux est disponible sur github.

18 septembre - Facturation à l’heure pour MQ et WAS

La facturation à l’heure pour utilisation de MQ (9.1+) ou WAS (8.5.5+) dans des containers est (...)

7 septembre - IBM Integration Bus V9.0 - Fix Pack 9.0.0.11

IBM annonce ce jour la disponibilité du Fixpack 11 pour IIB 9.0.
Les modules mis à jour sont : (...)

30 août - MQ 9.0.0.5 LTSR est disponible

Le FixPack 5 pour MQ 9.0.0 LTSR est disponible.

Sur le Web

25 octobre - PH02049: Potential cross-site scripting vulnerability in WebSphere Application Server CacheMonitor (CVE-2018-1767)

19 octobre - PH00886: IMPROVE FORMLOGOUT PROCESSING.

18 octobre - MQJMS2008 failed to open MQ queue with reason code 2085 caused by QueueManagerHost name configuration

18 octobre - PH02503: SERVER CREATION FAILS WITH NPE DUE TO LEFTOVER APPLICATION FOLDERS

18 octobre - PH02638: GETTING BLANK SCREEN IN DMGR CONSOLE WHEN TRYING TO UPDATE SERVER TEMPLATE IN DYNAMIC CLUSTER.

18 octobre - PH02461: MODIFYING OIDC RP CUSTOM PROPERITES IN A SECURITY DOMAIN VIA THE ADMIN CONSOLE RESULTED IN DUPLICATES

18 octobre - PH01546: JVM CUSTOM PROPERTY TO DISABLE NODE SYNCHRONIZATION

17 octobre - PH02234: ISSUE WHEN PROCESSING THE CALLER TOKEN FOR USERNAMETOKEN

17 octobre - IJ02960: Poison messages are discarded by MQ classes for JMS after failing to send to the backout queue

16 octobre - PH01681: CASE THEN AND ELSE SCALAR EXPRESSION CONSTANTS SHOULD NOT BE CASTED TO CASE OPERAND TYPE

16 octobre - PI98187: HAMI0015E: Encountered an error activating member . Exception was java.lang.NullPointerException

15 octobre - PI95769: DROPDOWN MENUS FOR CERTAIN PANELS DON'T GET POPULATED

15 octobre - PI98354: NO TEST CONNECTION BUTTON FOR OPERATOR ROLE IN DATASOURCENAME PAGE IN ADMINCONSOLE.

15 octobre - PH02197: SERVER ASSOCATED SHARED LIBRARIES NOT BEING PICKED UP BY WEBSPHERE APPLICATION SERVER

15 octobre - PI98695: DMGR CANNOT GET STATUS OF NODE AFTER MIGRATING DMGR WITH CLONE TRUE AND MIGRATING FEDERATED NODE WITH CLONE FALSE