5.9. Authentification SSL 2-way dans l'Interface de gestion et dans le CLI

L'authentification SSL 2-way, également connu sous le nom authentification du client, authentifie le client et le serveur à l'aide de certificats SSL. Cela garantit que le serveur soit non seulement qui il déclare être, mais le client également.
Dans cette section, on utilisera les conventions suivantes :

HOST1
Le nom d'hôte du serveur JBoss. Par exemple ; jboss.redhat.com
HOST2
Un nom qui convient au client. Par exemple : myclient. Notez qu'il ne s'agit par forcément d'un nom d'hôte.
CA_HOST1
Le DN (distinguished name) utilisé pour le certificat HOST1. Par exemple cn=jboss,dc=redhat,dc=com.
CA_HOST2
Le DN (distinguished name) utilisé pour le certificat HOST2. Par exemple cn=myclient,dc=redhat,dc=com.

Pré-requis

Procédure 5.3. 

  1. Générez les stores :
    keytool -genkeypair -alias HOST1_alias -keyalg RSA -keysize 1024 -validity 365 -keystore host1.keystore.jks -dname "CA_HOST1" -keypass secret -storepass secret
    keytool -genkeypair -alias HOST2_alias -keyalg RSA -keysize 1024 -validity 365 -keystore host2.keystore.jks -dname "CA_HOST2" -keypass secret -storepass secret
  2. Exportez les certificats :
    keytool -exportcert  -keystore HOST1.keystore.jks -alias HOST1_alias -keypass secret -storepass secret -file HOST1.cer
    
    keytool -exportcert  -keystore HOST2.keystore.jks -alias HOST2_alias -keypass secret -storepass secret -file HOST2.cer
    
  3. Importe des certificats dans les trust stores opposés :
    keytool -importcert -keystore HOST1.truststore.jks -storepass secret -alias HOST2_alias -trustcacerts -file HOST2.cer
    
    keytool -importcert -keystore HOST2.truststore.jks -storepass secret -alias HOST1_alias -trustcacerts -file HOST1.cer
    
  4. Définir un CertificateRealm dans la configuration de votre installation (host.xml ou standalone.xml) et y pointez l'interface :
    Cela peut se faire en modifiant le fichier de configuration manuellement (non recommandé) ou en utilisant les commandes suivantes :
    /core-service=management/security-realm=CertificateRealm:add()
    /core-service=management/security-realm=CertificateRealm/server-identity=ssl:add(keystore-path=/path/to/HOST1.keystore.jks,keystore-password=secret, alias=HOST1_alias)
    /core-service=management/security-realm=CertificateRealm/authentication=truststore:add(keystore-path=/path/to/HOST1.truststore.jks,keystore-password=secret)

    Important

    Les commandes données ne s'appliquent qu'en mode autonome. Pour le mode domaine, ajoutez /host=master avant chaque commande.
  5. Modifiez le security-realm de l'interface native du domaine de sécurité.
    /host=master/core-service=management/management-interface=native-interface:write-attribute(name=security-realm,value=CertificateRealm)
  6. Ajoutez la configuration SSL au CLI, utilisant le fichier EAP_HOME/bin/jboss-cli.xml pour les configurations. Utilisez soit un archivage de mots de passe pour stocker les mots de passe de keystore ou de truststore (recommandé), ou les stocker en texte brut :
    • Pour stocker les mots de passe de keystore et de truststore dans un archivage de mots de passe :
      Modifiez EAP_HOME/bin/jboss-cli.xml et ajoutez la configuration SSL (en utilisant les valeurs appropriées pour les variables). Ajoutez également la configuration de l'archivage, en remplaçant chaque valeur par celle de votre archivage.
      <ssl>
        <vault>
          <vault-option name="KEYSTORE_URL" value="path-to/vault/vault.keystore"/>
          <vault-option name="KEYSTORE_PASSWORD" value="MASK-5WNXs8oEbrs"/>
          <vault-option name="KEYSTORE_ALIAS" value="vault"/>
          <vault-option name="SALT" value="12345678"/>
          <vault-option name="ITERATION_COUNT" value="50"/>
          <vault-option name="ENC_FILE_DIR" value="path-to/jboss-eap/vault/"/>
        </vault>
        <alias>$HOST2alias</alias>
        <key-store>/path/to/HOST2.keystore.jks</key-store>
        <key-store-password>VAULT::VB::cli_pass::1</key-store-password>
        <key-password>VAULT::VB::cli_pass::1</key-password>  
        <trust-store>/path/to/HOST2.truststore.jks</trust-store>
        <trust-store-password>VAULT::VB::cli_pass::1</trust-store-password>
        <modify-trust-store>true</modify-trust-store>
      </ssl>
    • Pour stocker les mots de passe de keystore et de truststore en texte brut  :
      Modifiez EAP_HOME/bin/jboss-cli.xml et ajoutez la configuration SSL (en utilisant les valeurs appropriées pour les variables) :
      <ssl>
        <alias>$HOST2alias</alias>
        <key-store>/path/to/HOST2.keystore.jks</key-store>
        <key-store-password>secret</key-store-password>
        <trust-store>/path/to/HOST2.truststore.jks</trust-store>
        <trust-store-password>secret</trust-store-password>
        <modify-trust-store>true</modify-trust-store>
      </ssl>