Configurando o Acesso Seguro no Tomcat

Implementar o acesso seguro via SSL no Tomcat (o acesso https, ou http seguro) é simples. Para isso, é necessário a criação de um certificado (que pode ser validado por uma entidade certificadora ou não) e a habilitação do certificado no Tomcat.

Siga os passos abaixo:


1. Vamos criar um certificado de nome tomcat no keystore localizado em /etc/.keystore-tomcat, usando o algoritmo RSA e com validade de 1 ano (365 dias). Altere o comando caso necessário para definir outros locais ou validades.

$ keytool -genkey -alias tomcat -keyalg RSA -keystore /etc/.keystore-tomcat -validity 365

O keytool irá fazer algumas perguntas para criar o certificado. São elas:

  • a senha do keystore (escolha uma à seu gosto, mas deverá ser a mesma senha do certificado, mais adiante, e deverá ser escrita no server.xml)
  • o endereço do site (ele pergunta primeiro e ultimo nome, mas é para botar o endereço do site)
  • unidade organizacional (qualquer coisa)
  • nome da empresa
  • cidade
  • estado
  • país (apenas 2 letras, como em BR)
  • em seguida será pedida uma confirmação dos dados
  • por fim pedirá a senha do certificado tomcat, tecle Enter para que seja igual à senha do keystore

Eis um exemplo de configuração:

$ keytool -genkey -alias tomcat -keyalg RSA -keystore /etc/.keystore-tomcat -validity 365
Enter keystore password:  SUA_SENHA
What is your first and last name?
[Unknown]:  SEU_SERVIDOR.SEU_DOMINIO
What is the name of your organizational unit?
[Unknown]: SEU_SERVIDOR
What is the name of your organization?
[Unknown]:  NOME_DA_SUA_EMPRESA
What is the name of your City or Locality?
[Unknown]:  Rio de Janeiro
What is the name of your State or Province?
[Unknown]:  RJ
What is the two-letter country code for this unit?
[Unknown]:  BR
Is CN=SEU_SERVIDOR.SEU_DOMINIO, OU=SEU_SERVIDOR, O=NOME_DA_SUA_EMPRESA, L=Rio de Janeiro, ST=RJ, C=BR correct?
[no]:  yes

Enter key password for
(RETURN if same as keystore password):

2. Caso não deseje registrar o certificado oficialmente, ou seja, que ele seja assinado digitalmente por uma autoridade certificadora, pule para o passo 3.

2.1 Primeiro criamos um pedido de assinatura de certificado (CSR, Certificate Signing Request) para a CA (Certificate Authority):

$ keytool -certreq -keystore /etc/.keystore-tomcat -alias tomcat -file riopro-tomcat.csr

2.2 Agora devemos enviar o arquivo criado, riopro-tomcat.csr, para a CA. Veja com a CA escolhida como fazer isso.

2.3 A CA responderá enviando 2 arquivos:

  • Um arquivo *.der, contendo a chave pública da CA
  • Um arquivo *.pem, contendo a o nosso certificado assinado com a chave privada da CA

Devemos então importar estes 2 arquivos para o nosso keystore. É importante executar os 2 comandos abaixo na ordem mostrada.

$ keytool -import -alias  -file .der -keystore /etc/.keystore-tomcat
$ keytool -import -alias  -file .pem -keystore /etc/.keystore-tomcat

3. Devemos agora exportar o certificado à ser usado pelo Tomcat (o certificado de alias tomcat ou o certificado assinado pela CA, substitua se for o caso).

$ keytool -export -keystore /etc/.keystore-tomcat -alias tomcat -file /export_keystore-tomcat.cer

4. Agora devemos importar o certificado que exportamos para o keystore do Java. A senha do keystore do Java é por default changeit.

$ keytool -import -alias tomcat -file /export_keystore-tomcat.cer -keystore $JAVA_HOME/jre/lib/security/cacerts

PS.: caso só esteja instalado na máquia o JRE, o keystore do Java estará então em $JAVA_HOME/lib/security/cacerts
5. Por fim, devemos editar o arquivo de configuração do Tomcat em $TOMCAT_HOME/conf/server.xml, e habilitar o conector HTTPS na porta 8443 (ou você pode mudar para qualquer porta. Seguindo o exemplo:

< Connector port="8443" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" debug="0" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreType="JKS" keystoreFile="/etc/.keystore-tomcat" keystorePass="SUA_SENHA" />

Você pode comentar a parte sobre o conector HTTP se quiser, limitando o acesso à forma HTTPS.

6. Reinicie o Tomcat.

4 opiniões sobre “Configurando o Acesso Seguro no Tomcat”

  1. O acesso https não bloqueia o acesso http. Só se você comentar a porta 8080. Você pode inclusive ter uma página de login que você direciona para https e depois de se logar fica http mesmo. Ficaria mais comum você trocar a porta de 8080 para 80 para ter um site “normal”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Privado: Configurando o Acesso Seguro no Tomcat

Implementar o acesso seguro via SSL no Tomcat (o acesso https, ou http seguro) é simples. Para isso, é necessário a criação de um certificado (que pode ser validado por uma entidade certificadora ou não) e a habilitação do certificado no Tomcat.

Siga os passos abaixo:

Saiba mais

1 opinião sobre “Privado: Configurando o Acesso Seguro no Tomcat”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *