Instalação e Configuração do Apache com Suporte ao Tomcat e a SSL/TLS

1. Cenário

O cenário abaixo foi realizado utlizando o recurso de “Rede Interna” do VirtualBox. Todos os arquivos de configuração editados/necessários encontram-se neste link.

2. Instalação Manual do Tomcat

Antes desta tarefa instale o JDK no servidor. Em seguida instale o Tomcat conforme os comandos abaixo:

cd /opt
tar -xvzf apache-tomcat-8.0.36.tar.gz
mv apache-tomcat-8.0.36/ tomcat/
cd tomcat/bin
chmod +x *.sh
groupadd tomcat
useradd -g tomcat -d /opt/tomcat tomcat
usermod -G www-data tomcat
chown -R tomcat:tomcat /opt/tomcat

Verifique se o Tomcat está funcionando corretamente (abaixo):

/opt/tomcat/bin/startup.sh
/opt/tomcat/bin/shutdown.sh

Por fim, torne o Tomcat um serviço padrão do sistema:

chmod 755 /etc/init.d/tomcat
update-rc.d tomcat defaults

Caso você não encontre um script de inicialização para o tomcat na Internet, instale uma versão antiga do Tomcat em outra VM e use uma versão editada do script no seu servidor.

3. Configuração do Tomcat

Para criação de usuários no tomcat edite “conf/tomcat-users.xml” conforme abaixo:


<role rolename=”manager-gui”/>
<role rolename=”manager-status”/>
<role rolename=”manager-script”/>
<role rolename=”manager-jmx”/>
<role rolename=”admin-gui”/>
<user username=”tomcat” password=”ifpe” roles=”manager- gui,manager-status,manager-script,manager-jmx,admin-gui”/>
</tomcat-users>

Para administração remota do servidor, edite os arquivos webapps/manager/META-INF/context.xml e webapps/host-manager/META-INF/context.xml conforme abaixo:

<!– <Valve className=”org.apache.catalina.valves.RemoteAddrValve”
allow=”127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1″ /> –>

Pela segurança (opcional), desabilite esta funcionalidade após as mudanças necessárias.

Um recurso importante é a criação de Virtual Hosts no Tomcat. Para isso edite ao arquivo “conf/servers.xml de maneira similar ao exemplo abaixo:


<Host name=”catalina2.tomcat.br” appBase=”webapps_dois”
unpackWARs=”true” autoDeploy=”true”>

<Valve className=”org.apache.catalina.valves.AccessLogValve”
directory=”logs” prefix=”catalina2__access_log” suffix=”.txt”
pattern=”%h %l %u %t &quot;%r&quot; %s %b” />

</Host>

A utilização de Virtual Hosts no Tomcat ocorre de maneira similar ao Apache. Neste caso o “Host name” é um dos nomes de servidor atribuídos para o Servidor Tomcat e “appBase” é o diretório base da(s) aplicação(ões) para o um determinado servidor (Virtual Host).

4. Instalação do Apache e Módulos Necessários

Instale o servidor apache com suporte a php, mysql, tomcat e as extensões de segurança com o comando:

apt-get install apache2 php5 php5-mysql

Em seguida:

apt-get install libapache2-mod-jk

Verifique os módulos instalados no diretório /etc/apache2/mods-enabled. O libapache2-mod-jk é o módulo para integração do Apache com o Tomcat.

Também é necessário a habilitação do módulos Rewrite e SSL (abaixo):

a2enmod ssl
a2enmod rewrite

Observação: Sempre reinicie um serviço após o término das mudanças na configuração. Neste caso utilize o comando service apache2 reload/restart”.

5. Configuração de Virtual Hosts com suporte a SSL e Tomcat.

Para a utilização de SSL/TLS é necessário a criação de um certificado digital para o website (abaixo).

openssl req -new -x509 -days 3650 -sha1 -newkey rsa:2048 -nodes -keyout servidortomcat.key -out servidortomcat.crt
cp servidortomcat.key /etc/ssl/private
cp servidortomcat.crt /etc/ssl/certs

Após a criação do certificado digital, edite no Servidor Apache o arquivo /etc/libapache2-mod-jk/workers.properties (abaixo) informando o Servidor Tomcat que será utilizado. Neste caso: catalina2.tomcat.br.


worker.ajp13_worker.port=8009
worker.ajp13_worker.host=catalina2.tomcat.br
worker.ajp13_worker.type=ajp13

Por último deve ser criado o VirtualHost do website no Servidor Apache. Neste exemplo foram criados dois, o primeiro VirtualHost (1)(“tomcat.conf”) redireciona as solicitações HTTP (Porta 80) para o HTTPS (Porta 443 – SSL/TLS) e o segundo (2)(“tomcatSSL.conf”) é o verdadeiro website. Vale ressaltar que cada um dos arquivos possui linhas comentadas para possíveis casos de uso. Também não esqueça de criar links simbólicos (3)(abaixo) para cada VirtualServer e reiniciar/recarregar o serviço.

(1)
<VirtualHost *:80>
  ServerName tomcat.servidor.br
  ServerAlias servidor.tomcat.br
  Redirect permanent / https://tomcat.servidor.br
  #Redirect permanent / https://tomcat.servidor.br/examples
  # Somente para <VirtualHost *:80>
  #JkMount /* ajp13_worker
  #RewriteEngine On
  #RewriteRule ^/(.*) /examples/$1 [PT]
</VirtualHost>

(2)
<VirtualHost *:443>
  SSLEngine On
  SSLCertificateFile /etc/ssl/certs/servidortomcat.crt
  SSLCertificateKeyFile /etc/ssl/private/servidortomcat.key
  ServerName tomcat.servidor.br
  ServerAlias servidor.tomcat.br
  #DocumentRoot /var/www/tomcat
  #Errorlog /var/www/tomcat/tomcat-error.log
  #CustomLog /var/www/tomcat/tomcat-access.log common
  #<Directory /var/www/tomcat>
  # Options Indexes FollowSymLinks MultiViews
  # AllowOverride None
  # Order allow,deny
  # Allow from all
  #</Directory>
  #Página Principal do Tomcat.
  #A mesma exibida por http://localhost:8080
  JkMount /* ajp13_worker
  #https://tomcat.servidor.br/examples
  #JkMount /examples ajp13_worker
  #JkMount /examples/* ajp13_worker
</VirtualHost>

(3)
ln -s /etc/apache2/sites-avaliable/tomcat.conf /etc/apache2/sites-enabled/
ln -s /etc/apache2/sites-avaliable/tomcatSSL.conf /etc/apache2/sites-enabled/

6. Referências

[1] http://diegodospassos.com/blog/2016/08/30/instalacao-e-configuracao-manual-do-jdk-no-debian-ou-ubuntu/
[2] http://tomcat.apache.org/tomcat-8.5-doc/
[3] https://debian-handbook.info/browse/pt-BR/stable/sect.http-web-server.html
[4] https://httpd.apache.org/docs/trunk/pt-br/
[5] https://help.ubuntu.com/lts/serverguide/httpd.html
[6] https://wiki.debian.org/WebServers
[7] https://help.ubuntu.com/community/OpenSSL
[8] https://www.centos.org/docs/5/html/Cluster_Administration/s1-apache-inshttpd-CA.html
[9] https://doc.opensuse.org/documentation/leap/reference/html/book.opensuse.reference/cha.apache2.html

Publicado porDiego dos Passos

Olá a todos, eu sou o Diego. :) Atualmente sou professor do IFPE no campus de Jaboatão dos Guararapes. Neste website vocês encontrarão todas as informações relacionadas as atividades exercidas por mim na área de TI. Na área de pesquisa eu tenho atuado principalmente nos seguintes temas: Redes sem Fio, Gerenciamento de Mobilidade, Handover Vertical, Qualidade de Experiência (QoE), Redes de Quarta Geração (4G), Internet das Coisas (IoT) e do Futuro (IF). Veja o meu currículo lattes para saber mais sobre os projetos dos quais participei. O meu currículo lattes é: http://lattes.cnpq.br/4074265134616142 Contatos pelo e-mail: diego.silva@jaboatao.ifpe.edu.br Este e-mail é somente para atividades profissionais. :)