Wildfly (security-realms)

Nota

La seguente sezione fornisce degli esempi utili ad attuare la configurazione https. Per conoscere maggiori dettagli e modalità di configurazioni differenti fare riferimento a quanto indicato nella documentazione ufficiale dell’Application Server Wildfly (http://wildfly.org).

La configurazione può essere attuata nel file standalone.xml che si trova all’interno della cartella “WILDFLY_HOME/standalone/configuration/”.

  • Deve prima essere definito un security realm contenente il certificato che il server deve esporre, aggiungendolo ai security realms esistenti.

    <security-realms>
         <security-realm name="mySecurityRealm">
             <server-identities>
                     <ssl>
                             <keystore path="/etc/govway/keys/govway_server.jks" keystore-password="changeit"
                                       alias="aliasInKeystore" key-password="changeit" />
                     </ssl>
             </server-identities>
         </security-realm>
         ...
     </security-realms>
    

    se oltre ad esporre un certificato server, si deve autenticare il certificato client del chiamante, la configurazione del security realm deve essere estesa con la definizione di un trustStore che contenga i certificati necessari a validarli.

    <security-realms>
         <security-realm name="mySecurityRealmClientAuth">
             <server-identities>
                     <ssl>
                             <keystore path="/etc/govway/keys/govway_https_server.jks" keystore-password="changeit"
                                       alias="aliasInKeystore" key-password="changeit" />
                     </ssl>
             </server-identities>
             <authentication>
                     <truststore path="/etc/govway/keys/govway_https_truststore.jks" keystore-password="changeit"/>
             </authentication>
         </security-realm>
         ...
     </security-realms>
    
  • Il security realm creato deve essere associato ad un “https-listener”.

    <https-listener name="httpsGovWay" socket-binding="httpsGovWay" security-realm="mySecurityRealm"/>
    

    Per rendere obbligatorio che il chiamante debba fornire un proprio certificato client deve essere aggiunto l’attributo “verify-client” valorizzato con il valore “REQUIRED”. Se tale attributo viene valorizzato invece con il valore “REQUESTED” il certificato client non è obbligatorio ma verrà comunque validato, se presente.

    <https-listener name="httpsGovWayClientAuth" socket-binding="httpsGovWayClientAuth" security-realm="mySecurityRealmClientAuth" verify-client="REQUIRED"/>
    
  • Si deve infine associare al socket-binding indicato nell’https listener una porta su cui l’application server gestisce le richieste https.

    <socket-binding name="httpsGovWayClientAuth" port="${jboss.https.port:8445}"/>