Diretoria de Gestão de Tecnologia da Informação (DGTI)

5. Exemplo da instalação da certificação no servidor web Apache

De posse dos 3 arquivos anteriores (gs_root.pem, intermediate.pem e exemplo.ifsertao-pe.edu.br.crt), e da Chave Privada gerada na sessão 2 deste guia (exemplo.ifsertao-pe.edu.br.key), a cadeia de certificados pode ser instalada em definitivo no servidor que fará uso da certificação. No exemplo deste guia, o servidor a ser protegido é um Servidor Web identificado pelo domínio exemplo.ifsertao-pe.edu.br.

A instalação compreende basicamente a cópia dos arquivos para uma pasta específica do servidor, fazendo-se necessário ainda realizar algumas configurações para que os arquivos da certificação sejam localizados pelo serviço web e para que ele possa fazer uso do protocolo SSL através do HTTPS.

Por padrão o diretório /etc/ssl/ é utilizado para armazenar os certificados do servidor. Contudo, este exemplo usa a pasta <pasta_do_apache>/ssl/icpedu/, devendo-se copiar os arquivos anteriores para ela. O CentOS utiliza a pasta /etc/httpd/ como diretório padrão do serviço Apache, enquanto o Debian utiliza /etc/apache2/. Para tanto, os comandos abaixo podem ser utilizados:

mkdir <pasta_do_apache>/ssl/icpedu/
cd <pasta_onde_os_arquivos_foram_baixados>
cp *.pem *.crt *key <pasta_do_apache>/ssl/icpedu/

Por padrão, os arquivos de configuração dos sites do Apache no CentOS ficam em /etc/httpd/conf.d. No Debian, ficam localizados em /etc/apache2/sites-available/. Este exemplo considera que a pasta padrão no CentOS foi alterada para seguir o padrão do Debian, como segue:

  • Criação dos diretórios:
mkdir -p /etc/httpd/sites-available
mkdir -p /etc/httpd/sites-enabled
  • Edição do arquivo /etc/httpd/conf/httpd.conf para que o Apache enxergue o diretório criado /etc/httpd/sites-enabled, inserindo a seguinte linha no final do arquivo:
IncludeOptional sites-enabled/*.conf

Este exemplo habilita o SSL para o site “Site Exemplo” presente no diretório /var/www/html/siteexemplo/, com seu arquivo de configuração definido no arquivo <pasta_do_apache>/sites-available/siteexemplo.conf e habilitado pelo link correspondente em <pasta_do_apache>/sites-enabled/siteexemplo.conf. Para tanto, os seguintes comandos podem ser utilizados:

mkdir /var/www/html/siteexemplo
touch /var/www/html/siteexemplo/index.html
touch <pasta_do_apache>/sites-available/siteexemplo.conf
ln -s <pasta_do_apache>/sites-available/siteexemplo.conf <pasta_do_apache>/sites-enabled/siteexemplo.conf

Para fazer uso dos certificados, o arquivo <pasta_do_apache>/sites-available/siteexemplo.conf deve ser editado como o exemplo abaixo:

<VirtualHost <server_name>:443>
  
  DocumentRoot “/var/www/html/siteexemplo”
  SSLEngine on
  ServerName <server_name>:443
  
  SSLCACertificateFile <pasta_do_apache>/ssl/icpedu/gs_root.pem
  SSLCertificateChainFile <pasta_do_apache>/ssl/icpedu/intermediate.pem
  SSLCertificateFile <pasta_do_apache>/ssl/icpedu/exemplo.ifsertao-pe.edu.br.crt
  SSLCertificateKeyFile <pasta_do_apache>/ssl/icpedu/exemplo.ifsertao-pe.edu.br.key
  
  <Directory “/var/www/html/siteexemplo/”>
    DirectoryIndex index.html
    Options FollowSymLinks
    AllowOverride All
    Require all granted
  <Directory>

</VirtualHost>

Antes de testar o acesso, deve-se verificar se a porta HTTPS (443) está liberada no Firewall, caso o servidor faça uso de um. Pode ser necessário ainda habilitar o módulo SSL no servidor:

  • No CentOS:

yum install mod_ssl
  • No Debian:

a2enmod ssl

Para finalizar a instalação deve-se reiniciar os serviços com um dos comandos:

systemctl restart httpd
apache2ctl restart
shutdown -r now

O acesso HTTPS pode ser testado em um navegador web com a url https://exemplo.ifsertao-pe.edu.br/siteexemplo. A página web “Site Exemplo” deve ser exibida, significando que a conexão está sendo encriptada e que o certificado foi reconhecido pelo navegador devido ao cadeado ao lado da url. A figura abaixo exemplifica o acesso ao site web do domínio *rnp.br protegido por seu certificado digital.browser_https_rnp.jpg