Configurando SSL no Tomcat

Este tutorial em como objetivo mostrar como configurar SSL (acesso https://localhost:8443) no Tomcat.

A configuração consiste em 4 passos básicos:

1 – Criar um arquivo keystore usando Java
2 – Configurar o Tomcat para usar o keystore
3 – Testar
4 – Configurar sua web app para usar SSL (acesso através https://localhost:8443/suaApp)

1 – Criando um arquivo keystore usando Java

Abra o terminal do seu computador e digite:

Linux:

$ cd /usr/local/java/bin

Mac

$ cd /Library/Java/Home/bin

Você irá mudar o diretório corrente para o diretório de instalação Java para a pasta bin. Dentro da pasta bin existe um arquivo chamado keytool. Esse arquivo é responsável por gerar o arquivo keystore.

Vamos agora gerar o keystore. Digite no terminal:

keytool -genkey -alias tomcat -keyalg RSA

Quando der “Enter” no comando acima, irá aparecer algumas perguntas. Primeiro irá pedir para criar uma senha (escolhi “password” mesmo):

loiane:bin loiane$ keytool -genkey -alias tomcat -keyalg RSA

Enter keystore password:  password
Re-enter new password: password
What is your first and last name?
[Unknown]:  Loiane Groner
What is the name of your organizational unit?
[Unknown]:  home
What is the name of your organization?
[Unknown]:  home
What is the name of your City or Locality?
[Unknown]:  Sao Paulo
What is the name of your State or Province?
[Unknown]:  SP
What is the two-letter country code for this unit?
[Unknown]:  BR
Is CN=Loiane Groner, OU=home, O=home, L=Sao Paulo, ST=SP, C=BR correct?
[no]: yes
Enter key password for
(RETURN if same as keystore password):  password
Re-enter new password: password

O arquivo .keystore será criado no seu diretório home. No WIndows será algo do tipo C:\Documents and Settings\<username>; no Mac será /Users/<username> e no Linux será /home/<username>.

2 – Configurando o Tomcat para usar o keystore

Abra o diretório de instalação do Tomcat e abra a pasta conf . Dentro dessa pasta irá encontrar um arquivo chamado server.xml. Vamos editar esse arquivo.

Ache a seguinte declaração:

<!--

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->

Descomente o código acima e altere para ficar como abaixo – detalhe para o diretório onde está o keystore e a senha que setou quando criou o keystore:

<Connector SSLEnabled="true" acceptCount="100" clientAuth="false"

disableUploadTimeout="true" enableLookups="false" maxThreads="25"
port="8443" keystoreFile="/Users/loiane/.keystore" keystorePass="password"
protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
secure="true" sslProtocol="TLS" />

3 – Vamos testar!

Inicie o serviço do Tomcar e tente acessar https://localhost:8443. Deverá abrir a homepage local do Tomcat.

Note também que se tentar acessar pela porta padrão 8080 deverá funcionar também:http://localhost:8080

4 – Configurando sua web app para usar SSL (acesso através https://localhost:8443/suaApp)

Para forçar sua aplicação web a funcionar com SSL, adicione o código abaixo no arquivo web.xml da sua aplicação (antes do final da tag web-app):

<security-constraint>

<web-resource-collection>
<web-resource-name>securedapp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

A tag url pattern tem o valor /* para que qualquer página ou arquivo da sua aplicação seja seguro (só poderá ser acessado através de https). A tag transport-guarantee foi setado como CONFIDENTIAL para fazer com que a aplicação seja acessada através de SSL.

Se desejar desativar o acesso SSL da aplicação, não precisa deletar o código do arquivo web.xml, basta trocar oCONFIDENTIAL para NONE.

Referência: http://www.loiane.com/2011/06/configurando-ssl-no-tomcat-em-5-minutos-httpslocalhost8443/