2016-05-24 9 views
6

mam dwie różne domenyJBoss Application Server wiele domen i certyfikaty SSL

  • example1.com
  • example2.com

Każda domena ma swój własny certyfikat SSL.

Co próbuję teraz zrobić, to używanie obu domen dla tej samej instancji WildFly, obsługującej SSL.

Dokumentacja WildFly stwierdza, że ​​mogę odwołać się tylko do pojedynczego certyfikatu w magazynie kluczy. Tak więc nie mogę po prostu zdefiniować pojedynczego <security-realm> z jednym magazynem kluczy zawierającym oba certyfikaty.

W ten sposób zdefiniowałem dwa różne <security-realm>. Jeden dla każdej domeny.

<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> 

Nie mogę jednak dodać dwóch domen bezpieczeństwa do pojedynczego hosta.

<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> 

Teraz, jeśli mogę zdefiniować serwer dla każdej domeny, nie mogę odwołać samą HTTP/HTTPS wiążącą słuchacza, ponieważ porty są zablokowane.

Jedyne rozwiązanie, jakie znalazłem do tej pory, to posiadanie dwóch publicznych adresów IP i zdefiniowanie dwóch interfejsów oraz powiązanie gniazda http/https dla każdego interfejsu. Następnie jestem w stanie zdefiniować dwa serwery z innym aliasem i różnymi powiązaniami z gniazdami.

Od tej chwili WildFly niestety nie obsługuje SNI.

Czy istnieje inne możliwe rozwiązanie?

+0

Nie jestem zaznajomiony z WildFly, jednak dopóki WildFly nie obsługuje [SNI] (https://en.wikipedia.org/wiki/Server_Name_Indication), potrzebujesz dwóch oddzielnych adresów IP, jakie już znalazłeś. SNI sprawia, że ​​wiele witryn HTTPS działa na jednym adresie IP. Nie udało mi się znaleźć niczego stwierdzającego, że WildFly 10 wspiera SNI. Zacznę od sprawdzenia, czy WildFly obsługuje SNI, a następnie znalezienia odpowiedniej dokumentacji, jeśli tak się dzieje. – vcsjones

+0

Dzięki za odpowiedź. WildFly 10 nie obsługuje SNI po wyjęciu z pudełka. Istnieje bilet Jira, który żąda tej funkcji: https://issues.jboss.org/browse/XNIO-227 – kevcodez

+0

To odpowiednia odpowiedź. Bez SNI potrzebujesz wielu adresów IP. To ograniczenie TLS, a nie WildFly.Bez SNI, TLS nie może powiedzieć WildFly, "który" host jest rozwiązywany na ten adres IP. – vcsjones

Odpowiedz

5

Chociaż mogłoby to nieco skomplikować twoje wdrożenie, czy rozważałeś wprowadzenie serwera httpd Apache przed serwerem Wildfly? Nie byłoby to trudne i wspiera SNI. Trzeba by zmienić swoje certyfikaty dla Apache, ale potem, z Apache wirtualnego hostingu można mieć coś takiego:

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

w pierwszym pliku wirtualnego hosta oraz:

<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> 

Znowu problemy są takie, że masz inny proces do utrzymania i musisz skonfigurować SSL dla Apache. Ale można użyć Apache zrobić SSL, a jeśli chcesz, rzeczy takie jak:

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

Ta konfiguracja działa dobrze dla mnie z jednej Tomcat lub JBoss Application Server za Apache.

+0

Dziękuję za odpowiedź. Eksperymentujemy z dokładnie wspomnianą konfiguracją (Apache + WildFly). Jest to również nasze preferowane rozwiązanie, ponieważ nie chcemy ujawniać WildFly. – kevcodez

Powiązane problemy