2016-05-24 31 views
6

Ho due domini differentiwildfly più domini e certificati SSL

  • example1.com
  • example2.com

Ogni dominio ha il proprio certificato SSL.

Quello che sto cercando di fare ora, sta usando entrambi i domini per la stessa istanza WildFly, che supporta SSL.

La documentazione di WildFly afferma che posso fare riferimento a un singolo certificato in un keystore. Quindi, non posso semplicemente definire un singolo <security-realm> con un keystore che contiene entrambi i certificati.

Così, ho definito due diversi <security-realm>. Uno per ciascun dominio.

<security-realm name="RealmExample1"> 
       <server-identities> 
        <ssl> 
         <keystore path="example1.jks" keystore-password="secret" /> 
        </ssl> 
       </server-identities> 
       ... 
      </security-realm> 

    <security-realm name="RealmExample2"> 
       <server-identities> 
        <ssl> 
         <keystore path="example2.jks" keystore-password="secret2" /> 
        </ssl> 
       </server-identities> 
       ... 
      </security-realm> 

Tuttavia, non è possibile aggiungere due domini di sicurezza a un singolo host.

<server name="default-server"> 
       <http-listener name="default" socket-binding="http" redirect-socket="https-ext"/> 
       <https-listener name="default-ssl" security-realm="UndertowRealm" socket-binding="https"/> 
       <host name="default-host" alias="localhost"> 
        <filter-ref name="central-basic-auth"/> 
       </host> 
      </server> 

Ora, se io definisco un server per ogni dominio, non riesco a fare riferimento allo stesso http/https vincolante ascoltatore, dal momento che le porte sono bloccate.

L'unica soluzione che ho trovato finora è l'avere due indirizzi IP pubblici e la definizione di due interfacce e un binding socket http/https per ogni interfaccia. Quindi sono in grado di definire due server con un diverso alias e diversi binding socket.

A partire da ora, WildFly purtroppo non supporta SNI.

Esiste un'altra soluzione possibile?

+0

Non ho familiarità con WildFly, tuttavia a meno che WildFly supporti [SNI] (https://en.wikipedia.org/wiki/Server_Name_Indication), è necessario disporre di due IP separati come già trovato. SNI è ciò che rende più siti HTTPS su un singolo indirizzo IP. Non sono stato in grado di trovare nulla affermando che WildFly 10 supporta SNI. Vorrei iniziare scoprendo se WildFly supporta SNI, quindi trovando la documentazione appropriata se lo fa. – vcsjones

+0

Grazie per la risposta. WildFly 10 non supporta SNI fuori dalla scatola. C'è un biglietto Jira che richiede la funzione però: https://issues.jboss.org/browse/XNIO-227 – kevcodez

+0

Questa è praticamente la tua risposta allora. Senza SNI, hai bisogno di più indirizzi IP. Questa è una limitazione di TLS, non di WildFly.Senza SNI, TLS non è in grado di dire a WildFly "quale" host è stato risolto con quell'indirizzo IP. – vcsjones

risposta

5

Mentre complicherebbe un po 'la distribuzione, hai pensato di mettere Apache httpd davanti al tuo server Wildfly? Non sarebbe difficile da fare e supporta SNI. Si dovrà cambiare i certificati per Apache, ma poi, con Apache hosting virtuale si potrebbe avere qualcosa di simile:

<VirtualHost _default_:443> 
    ServerName www.firstdomain.com 
    ProxyPreserveHost on 
    ProxyPass/http://localhost:8080/ 
    ProxyTimeout 360 
</VirtualHost> 

nel primo file host virtuale e:

<VirtualHost _default_:443> 
    ServerName www.seconddomain.com 
    ProxyPreserveHost on 
    ProxyPass/http://localhost:9080/ # if it is a different instance or 
    ProxyPass/http://localhost:8080/app2 # if it the same instance, different webapp 
    ProxyTimeout 360 
</VirtualHost> 

Anche in questo caso, sono i problemi che hai un altro processo da mantenere e dovrai configurare SSL per Apache. Ma è possibile utilizzare Apache per fare SSL e, se vuoi, cose come:

Header set Content-Security-Policy ... 
Header set X-XSS-Protection "1; mode=block" 

Questa messa a punto ha funzionato bene per me sia con Tomcat o wildfly dietro Apache.

+0

Grazie per la risposta. Stiamo effettivamente sperimentando l'esatta configurazione che hai menzionato (Apache + WildFly). Questa è anche la nostra soluzione preferita, dal momento che non vogliamo esporre WildFly. – kevcodez

Problemi correlati