Primeiramente, vamos utilizar a ferramenta keytool
, que vem com a JDK, para gerar um arquivo que vai conter nossas chaves criptográficas públicas e privadas com o algoritmo RSA.
$ keytool -genkey -alias tomcat -keyalg RSA
Vão ser solicitados uma senha e alguns dados sobre sua a empresa. Em first and last name devemos colocar o domínio da nossa aplicação. No nosso caso, vai ser localhost
.
Enter keystore password: tomcat
Re-enter new password: tomcat
What is your first and last name?
[Unknown]: localhost
What is the name of your organizational unit?
[Unknown]: caelum
What is the name of your organization?
[Unknown]: caelum
What is the name of your City or Locality?
[Unknown]: Brasilia
What is the name of your State or Province?
[Unknown]: DF
What is the two-letter country code for this unit?
[Unknown]: BR
Is CN=locahost, OU=caelum, O=caelum, L=Brasilia, ST=DF, C=BR correct?
[no]: yes
Enter key password for
(RETURN if same as keystore password): tomcat
Re-enter new password: tomcat
Deve ter sido criado um arquivo .keystore
na sua pasta pessoal (/home/webxxxx
). Certifique-se disso, executando o comando:
$ ls -a ~/.key*
Agora, podemos configurar as nossas chaves no Tomcat. Como estamos controlando o Tomcat pelo Eclipse, abra o projeto Servers
e em Tomcat v7.0 Server at localhost-config
, edite o arquivo server.xml
.
Descomente as linhas abaixo, inserindo as propriedades keystoreFile
e keystorePass
:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/home/webxxxx/.keystore" keystorePass="tomcat" />
Pronto! Reinicie o Tomcat e veja se a aplicação está funcionando com https
na porta 8443
através do endereço: https://localhost:8443/fj21-tarefas/
.
Porém, a aplicação ainda está acessível sem https
pelo endereço http://localhost:8080/fj21-tarefas/
.
Podemos sempre redirecionar para o endereço seguro inserindo no web.xml
do projeto as seguintes configurações:
<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>