Configurando HTTPS no Wildfly

Esta configuração é apenas para habilitar o https em uma máquina de desenvolvimento com o Servidor de Aplicação Wildfly. Não fui a fundo na questão de segurança já que não sou eu que administro o servidor onde vai rodar a aplicação. Portanto não use isto em ambiente de produção.

Estou usando o Wildfly 8.2.0.Final.

  1. A primeira coisa a fazer é entrar no diretório da instalação do Wildfly, na pasta ./standalone/configuration/  e executar o seguinte comando:
    keytool -genkeypair -alias serverkey -keyalg RSA -keysize 2048 -validity 7360 -keystore localhost.keystore -keypass mypassword -storepass mypassword -dname "cn=Server Administrator,o=Acme,c=GB"
  2. Edite o arquivo ./standalone/configuration/standalone.xml e adicione o seguinte xml dentro de security-realms:
    <security-realm name="UndertowRealm">
    	<server-identities>
    		<ssl>
    			<keystore path="localhost.keystore" relative-to="jboss.server.config.dir" keystore-password="mypassword"/>
    		</ssl>
    	</server-identities>
    </security-realm>
  3. Em seguida adicione a linha abaixo dentro de subsystem undertow -> server
    <https-listener name="https" socket-binding="https" security-realm="UndertowRealm"/>

    Veja como ficou a entrada completa:

    <subsystem xmlns="urn:jboss:domain:undertow:1.2">
    	<buffer-cache name="default"/>
    	<server name="default-server">
    		<http-listener name="default" socket-binding="http"/>
    		<https-listener name="https" socket-binding="https" security-realm="UndertowRealm"/>
    		<host name="default-host" alias="localhost">
    			<location name="/" handler="welcome-content"/>
    			<filter-ref name="server-header"/>
    			<filter-ref name="x-powered-by-header"/>
    		</host>
    	</server>
    	<servlet-container name="default">
    		<jsp-config/>
    		<websockets/>
    	</servlet-container>
    	<handlers>
    		<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
    	</handlers>
    	<filters>
    		<response-header name="server-header" header-name="Server" header-value="WildFly/8"/>
    		<response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
    	</filters>
    </subsystem>

 

Pronto, reinicie o servidor e acesse https://localhost:8443.

Sobre o autor

Um desenvolvedor web veterano que está sempre a procura de novas tecnologias que facilitem o desenvolvimento de aplicativos ricos para a internet. Louco por tecnologia, games e Linux.

14 Comentários

  1. Márcio Gomes Gonçalves4 de maio de 2017 at 16:55

    Me ajudou. Obrigado.

  2. christianodba7 de junho de 2017 at 16:01

    Se eu quiser que não acesse mais a 8080, como faço? Mesmo ativando https, se eu colocar o endereço http limpo, ainda entra.

    • Leonardo Lima de Vasconcellos7 de junho de 2017 at 23:47

      Remova todos os http-listeners e suas referências nos subsystems. Procure por connector-ref=”default” or http-listener=”default” e substitua por connector-ref=”default-ssl”.

  3. Wellington Medeiros17 de agosto de 2017 at 11:36

    Olá Leonardo, Bom dia!
    Utilizo o JBOSS/WildFly-8.2.0-Final, no modo standalone.

    Como eu configuro para redirecionar automaticamente para a porta 8443, sem precisar deixar explícito na url.
    Exemplo: http://www.omeusite.com.br
    Eu quero que ao digitar, internamente já seja direcionado para a porta https.
    Isso acontece com o site da uol. Se você digitar http://www.uol.com.br, ao carregar você percebe que o endereço mostra o cadeado de seguro e na url fica https://www.uol.com.br/.

    • Leonardo Lima de Vasconcellos17 de agosto de 2017 at 11:41

      Remova todos os http-listeners e suas referências nos subsystems. Procure por connector-ref=”default” or http-listener=”default” e substitua por connector-ref=”default-ssl”.

    • Wellington Medeiros17 de agosto de 2017 at 12:45

      Olá leonardo, tentei essa forma e não deu certo, apresentou vários erros ao subir o jboss.

      Achei a solução:
      Você precisa alterar o web.xml da aplicação inserindo o conteúdo abaixo:

      <web-app>
        ...
          <security-constraint>
            <web-resource-collection>
              <web-resource-name>Viewpoint Secure URLs</web-resource-name>
              <url-pattern>/*</url-pattern>
            </web-resource-collection>
            <user-data-constraint>
              <transport-guarantee>CONFIDENTIAL</transport-guarantee>
            </user-data-constraint>
          </security-constraint>
      </web-app>
      

      Com isso, automaticamente o jboss redireciona a aplicação para a porta https.

      Obs. tem que antes fazer tudo o que vc explicou no site.

      De qualquer forma, gostaria de agradecer pela sua atenção.
      Um forte abraço amigo.

  4. Itallo15 de setembro de 2017 at 10:40

    Obrigado pela dica !!! ajudou bastante

  5. anderson22 de setembro de 2017 at 15:58

    Leonardo, segui todos os passos porém mostra que a conexão não é segura, é isso mesmo?

    • Leonardo Lima de Vasconcellos22 de setembro de 2017 at 22:07

      Você deve estar sem um certificado de criptografia válido instalado. Este tutorial apenas ensina como ativar o HTTPS mas não abrange a configuração de um certificado de criptografia. Tente fazer uma pesquisa no google por “let’s encrypt wildfly”.

Deixe uma resposta