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.

Certificat auto-signé

Certificat auto-signé

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

Connexion non sécurisée

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 :

Libellé certificat

Libellé certificat

Certificat signé par la CA

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 :

runmqckm

runmqckm

Installation du magasin sur le serveur

Dans un souci de standardisation, les magasins de certificats sont stockés dans /var/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 :
pwd
/var/mqm/mags
ls -al
total 4
drwxrwsr-x 2 mqm mqm 28 Oct 7 03:13 .
drwxrwsr-x 19 mqm mqm 326 Oct 6 00:27 ..
-rw-rw-r-- 1 root mqm 2580 Oct 6 16:19 dc_console.jks

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
xorMj44Lz4sLA==

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 :

Connection MQ Console

Connection MQ Console

(c) Luc-Michel Demey – Octobre 2018.ibm-champion-rgb-130px.png