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 :
- Partie 1 : Utilisation de MQ Console
- Partie 2 : Paramétrage MQ Console
- Partie 3 : MQ Console et SSL (cet article)
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.
Ceci génère des alertes au moment de la connexion à la console, en particulier SEC_ERROR_UNKNOWN_ISSUER :
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 :
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 :
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 :
Décommenter le bloc et modifier ainsi les paramètres :
<!--
<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"/>
-->
- 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 :
(c) Luc-Michel Demey – Octobre 2018.