Certificado SSL no servidor Apache (CentOS 7)

Procedimentos para o uso de SSL para o apache prover HTTPs em servidores CentOS

Instalação do Apache

yum install httpd && systemctl start httpd

Inicie automaticamente durante o boot

systemctl enable httpd.service

Checar o sistema apenas para garantir que ele está atualizado.

yum -y update

Garanta que você tem o repositório EPEL ativado

yum -y install epel-release

Logo após vem a instalação do yum-utils

yum -y install yum-utils

mod_ssl

yum -y install mod_ssl

Firewall

firewall-cmd --add-service=http --permanent && firewall-cmd --reload

Crie uma pasta raíz de documentos para o website.

mkdir /var/www/html/site
echo "It works" > /var/www/html/site/index.html

Neste passo, é necessário um arquivo de configuração de host virtual.

cat << EOF > /etc/httpd/conf.d/vhosts.conf
<VirtualHost *:80>
    ServerName srvWebSite
    Redirect permanent / https://teste.site.sp.gov.br/
</VirtualHost>

<VirtualHost _default_:443>
    ServerName teste.site.sp.gov.br
    ServerAlias site.sp.gov.br
    ServerAdmin suporte@joserodriguesfilho.com
    DocumentRoot /var/www/html/site
</VirtualHost>
EOF

Para adicionar a diretiva ServerName no arquivo /etc/httpd/conf/httpd.conf, utilizando o comando sed e capturando o hostname da máquina, você pode seguir os seguintes passos:

hostname=$(hostname)
sudo sed -i '95iServerName '${hostname} /etc/httpd/conf/httpd.conf

Copie o certificado para as pastas abaixo:

cp site.sp.gov.br.crt /etc/pki/tls/certs/
cp site.sp.gov.br.key /etc/pki/tls/private/

Alterar o arquivossl.conf

sed -i 's|SSLCertificateKeyFile /etc/pki/tls/private/localhost.key|SSLCertificateKeyFile /etc/pki/tls/private/site.sp.gov.br.key|' /etc/httpd/conf.d/ssl.conf
sed -i 's|SSLCertificateFile /etc/pki/tls/certs/localhost.crt|SSLCertificateFile /etc/pki/tls/certs/site.sp.gov.br.crt|' /etc/httpd/conf.d/ssl.conf

Depois de adicionar o conteúdo ao arquivo, lembre-se de verificar a configuração e reiniciar o Apache para aplicar as alterações:

*O apachectl configtest é usado para verificar se há erros de sintaxe na configuração antes de reiniciar o serviço.

apachectl configtest && systemctl restart httpd

ATENÇÃO

Enter SSL pass phrase for srvWebSite:443 (RSA) :

Para não receber a mensagem acima quando reiniciarmos o Apache, faremos o seguinte:

cd /etc/pki/tls/private/ && openssl rsa -in site.sp.gov.br.key -out site.sp.gov.br.key.pass
mv site.sp.gov.br.key site.sp.gov.br.key.bkp
mv site.sp.gov.br.key.pass site.sp.gov.br.key

Por fim, reinicie o Apache

systemctl restart httpd

Acesse o seu site:

https://teste.site.sp.gov.br

Aqui está um resumo da configuração:

  1. Primeiro Bloco VirtualHost (Porta 80):
    • Este bloco lida com o tráfego HTTP na porta 80.
    • ServerName: Especifica o nome de domínio do site (por exemplo, seusite.seudominio.com).
    • Redirect permanent / https://seusite.seudominio.com/: Esta linha é uma diretiva para redirecionar todo o tráfego HTTP para a versão HTTPS do site, garantindo uma conexão segura.
  2. Segundo Bloco VirtualHost (default:443):
    • Este bloco lida com o tráfego HTTPS na porta 443.
    • ServerName: Novamente, especifica o nome de domínio principal do site.
    • ServerAlias: Permite que o servidor responda a outros nomes de host (por exemplo, seusite).
    • ServerAdmin: O endereço de e-mail que deve ser associado a questões relacionadas ao servidor.
    • DocumentRoot: Este é o diretório onde os arquivos reais do site estão armazenados, neste caso, localizados em /var/www/html/seusite.seudominio.com.