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. 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. :)