Instalar certificados do ICPEdu

1. Introdução

A Infraestrutura de Chaves Públicas para Ensino e Pesquisa (AC ICPEdu) é o serviço de certificação digital oferecido pela RNP, que provê infraestrutura pronta para a emissão de certificados digitais e chaves de segurança.

A modalidade adotada pelo IFPE é a “Certificado Corporativo”, onde as instituições clientes emitem gratuitamente certificados digitais qualificados pela GlobalSign, uma das maiores autoridades certificadoras do mundo. Isso fortalece a confiança dos usuários, que têm a garantia de estar fazendo negócios com uma instituição idônea.

Este documento visa a orientar a configuração do certificado emitido através do Sistema de Chamados do IFPE nos servidores web Apache e NGinx.

Observe que todos os passos são obrigatórios.

2. Utilizando os arquivos

Neste ponto devemos ter os seguintes arquivos disponíveis:

  • dh-4096.pem

Arquivo contém os parâmetros Diffie-Hellman usado para fortalecer o canal criptografado e dificultar ataques que interceptam o tráfego criptografado.

  • icpedu-chain.crt

Arquivo contém a cadeia de autoridades de certificação que inclui a CA do ICPEdu e as da Globalsign, usado para permitir que o cliente confira a validade dos certificados.

  • globalsign-ca.crt

 Arquivo contém o certificado da CA raiz da Globalsign, usado para permitir que o cliente confira a validade dos certificados.

  • CEPO171124239914-chain.crt

 Arquivo inclui a cadeia de certificados que inclui o do ICPEdu, os da Globalsign, e o certificado gerado para o dispositivo final ou aplicação. É ele que será apresentado aos navegadores dos usuários.

  • CEPO171124239914.key

Arquivo inclui a chave privada do certificado gerado para o dispositivo final ou aplicação. Ele será usada para compor o fluxo criptografado, juntamente com o certificado, aos navegadores dos usuários.

A seguir estão instruções de como utilizar os arquivos gerados nos servidores HTTP Apache e NGinx, instalados nos  sistemas operacionais Linux Debian (os comandos são também válidos para Ubuntu) e Centos.

2.1. O diretório dos arquivos

Para seguir os passos definidos neste documento, copie os arquivos para o diretório “/etc/ssl/private/”.

[usuario@linux /tmp]$ sudo mkdir -p /etc/ssl/private
[usuario@linux /tmp]$ sudo cp *.crt *.key *.pem *.pfx /etc/ssl/private

Os passos a seguir não funcionarão se os arquivos não estiverem no diretório “/etc/ssl/private/”.

2.2. Configuração com Apache

Por padrão, os arquivos de configuração dos sites do Apache no Debian e Ubuntu ficam localizados em  “/etc/apache2/sites-available/" . Caso esteja instalado no Centos, ficam em /etc/httpd/conf.d

No arquivo de cada host, dentro da sessão “<VirtualHost>onde o SSL esteja habilitado inclua as definições  de modo que se pareça com o que é mostrado a seguir:

Para identificar qual VirtualHost possui SSL habilitado, observe se uma linha com o conteúdo "SSLEngine On" existe

Caso a versão do apache seja inferior a 2.3.6

<VirtualHost <server_name>:443>
  Listen 443
  SSLEngine on
  ServerName <server_name>:443
  ...

  # Certificados
  SSLCertificateFile /etc/ssl/private/CEPO171124239914-chain.crt
  SSLCACertificateFile /etc/ssl/private/globalsign-ca.crt
  SSLCertificateKeyFile /etc/ssl/private/CEPO171124239914.key
  SSLCertificateChainFile /etc/ssl/private/icpedu-chain.crt
  ...
</VirtualHost> 

Caso a versão do apache seja superior a 2.3.6 e inferior a 2.4.8  

<VirtualHost <server_name>:443>
  Listen 443
  SSLEngine on
  ServerName <server_name>:443
  ...
  # OCSP Stappling
  SSLUseStapling On
  SSLStaplingCache "shmcb:/tmp/stapling-cache(150000)"

  # Certificados
  SSLCertificateFile /etc/ssl/private/CEPO171124239914-chain.crt
  SSLCACertificateFile /etc/ssl/private/globalsign-ca.crt
  SSLCertificateKeyFile /etc/ssl/private/CEPO171124239914.key
  SSLCertificateChainFile /etc/ssl/private/icpedu-chain.crt
  ...
</VirtualHost> 

Caso a versão do apache seja a 2.4.8 ou superior

No arquivo de cada host, dentro da sessão “<VirtualHost>onde o SSL esteja habilitado inclua as definições (da linha 6 até a 14) de modo que se pareça com o que é mostrado a seguir:

<VirtualHost <server_name>:443>
  Listen 443
  SSLEngine on
  ServerName <server_name>:443
  ...
  # OCSP Stappling
  SSLUseStapling On
  SSLStaplingCache "shmcb:/tmp/stapling-cache(150000)"

  # Certificados
  SSLOpenSSLConfCmd DHParameters /etc/ssl/private/dh-4096.pem
  SSLCACertificateFile /etc/ssl/private/globalsign-ca.crt
  SSLCertificateFile /etc/ssl/private/CEPO171124239914-chain.crt
  SSLCertificateKeyFile /etc/ssl/private/CEPO171124239914.key
  ...
</VirtualHost>

 Após realizar a configuração mostrada é preciso aplicar as alterações.

Procure por erros de configuração:
[usuario@linux ~]$ sudo apache2ctl -t

Se tudo correu bem, reinicie o serviço (no Debian/Ubuntu/Centos):
[usuario@linux ~]$ sudo apache2ctl -k restart

Para que as alterações entrem em vigor é necessário reiniciar o serviço

2.3. Configuração com NGinx

Utilize o comando nginx -v para saber a versão do nginx atualmente instalada. Para este documento, é necessário que versão seja igual ou superior a 1.3.7. 

Por padrão, os arquivos de configuração dos sites do NGinx no Debian e Ubuntu ficam localizados em  “/etc/nginx/sites-available/" . Caso esteja instalado no Centos, ficam em /etc/nginx/conf.d

No arquivo de cada host, na sessão “serveronde o SSL esteja habilitado  inclua as definições (da linha 4 até a 13) de modo que se pareça com o que é mostrado a seguir:

Para identificar qual VirtualHost possui SSL habilitado, observe se uma linha com o conteúdo "listen 443 ssl" existe

server {
  listen 443 ssl;
  ...
  # OCSP Stappling
  ssl_stapling on;
  ssl_stapling_verify on; 
  resolver 208.67.220.220 208.67.222.222 valid=600s;

  # Certificados
  ssl_dhparam /etc/ssl/private/dh-4096.pem;
  ssl_certificate /etc/ssl/private/CEPO171124239914-chain.crt;
  ssl_certificate_key /etc/ssl/private/CEPO171124239914.key;
  ssl_trusted_certificate /etc/ssl/private/icpedu-chain.crt;
  ...
}

 Após realizar a configuração mostrada é preciso aplicar as alterações.

Procure por erros de configuração:
[usuario@linux ~]$ sudo nginx -t

Se tudo correu bem, reinicie o serviço (no Debian/Ubuntu e Centos):
[usuario@linux ~]$ sudo nginx -s reload

Para que as alterações entrem em vigor é necessário reiniciar o serviço

2.4 Outros sistemas

Caso haja a necessidade de instalar o certificado em outros oftwares (como MS IIS, MS Exchange e CPanel), acesse a documentação de instalação disponibilizada pela Globalsign clicando neste link.