Como redirecionar HTTP para HTTPS no Glassfish

Neste tutorial, vou mostrar como habilitar o https no seu Glassfish e redirecionar todo acesso ao servidor para o endereço seguro.

Alterando as portas

Como mostrei em outra postagem, clique aqui, uma boa prática é alterar as portas padrões dos ouvintes http do Glassfish para as que são usadas por padrão nos navegadores (http: 80 e https: 443):

Navegar até ‘Configurations > server-config > Network Config > Network listeners > http-listner-1’ alterar a porta de 8080 para 80

Navegar até ‘Configurations > server-config > Network Config > Network listeners > http-listner-2’ alterar a porta de 8181 para 443

Criando um servidor virtual

O Glassfish trabalha com o conceito de servidor virtual, que agrupa configurações como de ouvintes http. Para que todo acesso http seja redirecionado para o https, vamos criar mais um servidor virtual que responde apenas ao ouvinte da porta 80 e, ao acessar este, será redirecionado para o https por meio de um arquivo html (explico mais a frente).

Para criar um novo servidor virtual, navega até ‘Configurations > server-config >Virtual Servers’  e crie um novo. As informações que devem ser preenchidas devem ser quase as mesmas do servidor que já vem criado, além no nome, obviamente, marque apenas o ‘http-listener-1’ em ‘Network Listeners’ e em ‘Docroot’ indique outro caminho.

Criando um servidor virtual

Ou seja, este servidor virtual irá responder apenas no ‘http-listener-1’, que ouve na porta 80, e irá chamar o caminho do ‘docroot’ onde colocaremos um arquivo html para redirecionar para o endereço https.

Edite o servidor virtual já criado, e mantenha apenas o ‘http-listner-2’ marcado, assim ele só irá responder na porta 443.

Para finalizar essa sessão, edite o ‘http-listener-1’ em ‘Configurations > server-config > Network Config > Network listeners > http-listner-1 > HTTP’ e altere o ‘Default Virtual Server’ para o servidor virtual recém criado, ou seja, o que irá responder apenas na porta 80.

Configurando o listener para responder ao novo servidor virtual

Verifique se a sua aplicação continua usando apenas o servidor virtual que responde ao https, em ‘Applications > [sua aplicação] > Virtual Servers’.

A sua aplicação deve responder apenas ao servidor virtual que usa o https

Criando um arquivo no novo docroot

Em seu gerenciador de arquivos, navegue até ‘glassfish/domains/domain1’ lá já deve haver um diretório ‘docroot’ onde será redirecionado o acesso do servidor virtual que responde ao https, caso não chame a aplicação pelo caminho correto, apenas o IP, por exemplo. Crie um diretório com o mesmo nome indicado na criação do servidor virtual que responde apenas ao http, em nosso caso ‘docroot80’ e crie um arquivo index.html dentro dele, com o seguinte conteúdo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html lang=pt>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Refresh" content="1;URL=https://x.x.x.x/sua_aplicacao/">
</head>
<body>
Redirecionando...
</body>
</html>

Deste modo, quando o usuário acessar o endereço do servidor sem o https, o Glassfish irá, por meio do ouvinte da porta 80 e do servidor virtual que criamos, invocar esse index.html, que por sua vez irá redirecionar para o endereço com o https. Você também pode criar dentro desse novo docroot um diretório com o mesmo nome do endereço da sua aplicação, com o mesmo index.html dentro, assim se for acessado o endereço do servidor, com o caminho para a sua aplicação sem o https, também será redirecionado para a conexão segura.

 

[]’s

Paulo Collares

Servo de Jesus Cristo, Analista de Sistemas, com especialidade em Engenharia de Software Saiba mais sobre mim