5.7. Configurer la console de gestion pour HTTPS

Configurer la console de gestion JBoss EAP pour communication uniquement via HTTPS offre une sécurité accrue. Tout le trafic réseau entre le client (navigateur web) et la console de gestion est encodé, ce qui réduit le risque d'attaque de sécurité comme une attaque man-in-the-middle. Toute personne qui administre une instance de JBoss EAP a des autorisations supérieures sur cette instance par rapport aux utilisateurs non privilégiés, et l'utilisation du protocole HTTPS permet de protéger l'intégrité et la disponibilité de cette instance.
Dans cette procédure, les communications encodées avec le domaine ou l'instance autonome de JBoss EAP sont désactivées. Les mots de passe qui utilisent la fonctionnalité vault, et les mots de passe utilisés dans les fichiers de configuration sont masqués.
Cette procédure s'applique à la fois aux modes de configuration en standalone ou en domain. En mode domain, donnez le préfixe de nom d'hôte aux commandes CLI, par exemple /host=master.

Procédure 5.2. 

  1. Créez un keystore pour sécuriser la console de gestion.

    Note

    Ce keystore doit être en format JKS car la console de gestion n'est pas compatible avec les keystores en format JCEKS.
    Dans un émulateur de terminal, saisissez la commande suivante. Pour les paramètres alias, keypass, keystore, storepass et dname, remplacez les valeurs en exemple par les valeurs de votre choix.
    Le paramètre validity indique le nombre de jours pendant la clé est valide. Une valeur de 730 correspondra à deux ans.
    keytool -genkeypair -alias appserver -storetype jks -keyalg RSA -keysize 2048 -keypass password1 -keystore EAP_HOME/standalone/configuration/identity.jks -storepass password1 -dname "CN=appserver,OU=Sales,O=Systems Inc,L=Raleigh,ST=NC,C=US" -validity 730 -v
  2. Veillez à ce que la console de gestion soit bien reliée à HTTPS

    • Mode autonome

      Veillez à ce que la Console de gestion soit reliée à HTTPS pour son interface en ajoutant la configuration management-https et en supprimant la configuration management-http.
      Assurez vous bien que l'instance JBoss EAP est en cours d'exécution, et saisir les commandes CLI de gestion suivantes :
      /core-service=management/management-interface=http-interface:write-attribute(name=secure-socket-binding, value=management-https)
      /core-service=management/management-interface=http-interface:undefine-attribute(name=socket-binding)
      La sortie de cette commande sera comme suit :
      {"outcome" => "success"}
      

      Note

      À cet point dans le temps, le journal de JBoss EAP affichera sans doute le message d'erreur suivant. C'est normal car la configuration SSL n'est pas encore terminée.
      JBAS015103: A secure port has been specified for the HTTP interface but no SSL configuration in the realm.
      
    • Mode Domaine

      Modifiez l'élément de socket de la section management-interface en ajoutant secure-port et en supprimant la configuration de port.
      Assurez vous bien que l'instance JBoss EAP est en cours d'exécution, et saisir les commandes CLI de gestion suivantes :
      /host=master/core-service=management/management-interface=http-interface:write-attribute(name=secure-port,value=9443)
      /host=master/core-service=management/management-interface=http-interface:undefine-attribute(name=port)

      Note

      À cet point dans le temps, le journal de JBoss EAP affichera sans doute le message d'erreur suivant. C'est normal car la configuration SSL n'est pas encore terminée.
      JBAS015103: A secure port has been specified for the HTTP interface but no SSL configuration in the realm.
      
  3. Option : personnalisation du groupe de socket-binding

    Si vous utilisez un groupe socket-binding personnalisé, veillez à ce que la liaison management-https soit définie (présente par défaut, liée au port 9443). Modifiez le fichier de configuration du master - par exemple standalone.xml - pour qu'il puisse correspondre à ce qui suit.
     <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
            <socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/>
            <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
            <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}"/>
    
  4. Créer un nouveau domaine de sécurité

    Exécutez la commande suivante pour créer un nouveau domaine de sécurité nommé MyDomainRealm.
    /host=master/core-service=management/security-realm=ManagementRealmHTTPS/:add
    /host=master/core-service=management/security-realm=ManagementRealmHTTPS/authentication=properties/:add(path=ManagementUsers.properties, relative-to=jboss.domain.config.dir)
  5. Configurez l'interface de gestion avec le nouveau domaine de sécurité.

    Saisir les commandes suivantes :
    /host=master/core-service=management/management-interface=http-interface/:write-attribute(name=security-realm,value=ManagementRealmHTTPS)
  6. Configurez la console de gestion pour qu'elle puisse utiliser le keystore.

    Saisissez la commande CLI suivante. Pour les paramètres file, password et alias, leurs valeurs doivent être copiées à partir de l'étape Create a keystore to secure the management console (Créer un keystore pour sécuriser la console de gestion).
    /core-service=management/security-realm=ManagementRealmHTTPS/server-identity=ssl:add(keystore-path=identity.jks,keystore-relative-to=jboss.server.config.dir, keystore-password=password1, alias=appserver)
    La sortie de cette commande sera comme suit :
    {
        "outcome" => "success",
        "response-headers" => {
            "operation-requires-reload" => true,
            "process-state" => "reload-required"
        }
    }
  7. Démarrez à nouveau le serveur JBoss EAP.

    Au redémarrage du serveur, le journal doit contenir ce qui suit, juste avant le texte qui indique le nombre de services démarrés. La console de gestion est maintenant en écoute sur le port 9443, ce qui confirme que la procédure a réussi.
    14:53:14,720 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015962: Http management interface listening on https://127.0.0.1:9443/management
    14:53:14,721 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015952: Admin console listening on https://127.0.0.1:9443
    

Note

Pour des raisons de sécurité, nous recommandons de masquer le mot de passe du kestore. Voir les détails ici Section 7.1, « Système d'archivage sécurisé de mots de passe ».