Tutorial instalar certificado SSL grátis no Ubuntu com servidor Apache

Objetivos

  • Entender o que é um certificado SSL
  • Saber o que é o Ubuntu
  • Saber o que é o servidor Apache
  • Passo a passo para instalar certificados SSL Let’s Encrypt (grátis) no Sistema Operacional Ubuntu com servidor Apache

O que é um certificado SSL?

A sigla SSL vem do inglês “Secure Sockets Layer”, que pode ser traduzido para algo como “camada de soquete segura”.
Assim, o certificado SSL, na prática tem como objetivo ser uma camada de segurança entre o acesso do usuário pelo browser a um servidor web (website).
Com certeza todos nós já acessamos um site com certificado SSL ativo e válido, principalmente ao comprar online, ou acessando internet banking.
Uma forma de verificar se o site que está acessando utiliza certificado SSL é verificar se a URL começa com https://, tendo o caracter ‘s’ depois de http.
Uma curiosidade, atualmente é utilizado TLS – Transport Layer Security para garantir essa segurança ponta a ponta. Visto que desde a criação do protocolo SSL, vários problemas de brechas de segurança foram aparecendo e existindo então a necessidade de atualizações. Mas como o nome SSL ficou tão popular, ele ainda é utilizado para especificar a segurança entre as conexões com TLS.

O que é Ubuntu?

O Ubuntu descrito neste tutorial é a distribuição do Sistema Operacional Linux instalada no servidor. Porém o software Certbot utilizado para gerenciar os certificados SSL tem suporte a diversos sistemas operacionais. Caso utilize outro sistema operacional, basta acessar o site oficial do Certbot e verificar as recomendações de instalação.

O que é o servidor Apache?

O Apache (apache2) é o software utilizado para o servidor prover páginas web. Ou seja, é o software de servidor http utilizado. Existem diversos disponíveis no mercado, mas este tutorial irá descrever o passo a passo utilizando o Apache.

Requisitos para seguir o tutorial

Para ser possível seguir este tutorial à risca, é necessário que você já tenha registrado um nome de domínio. Além de registrar o nome de domínio, é necessário ter configurado corretamente o DNS deste nome de domínio para seu servidor. No seu servidor, é necessário já ter configurado os arquivos de configuração virtualhost do apache. Estamos realizando esta configuração em um servidor Ubuntu com Apache, então é recomendado que também utilize o mesmo sistema operacional (ou distribuição equivalente baseada em Debian).
Já abordamos todas as necessidades acima com um passo a passo em publicações anteriores:

  1. Servidor:
  2. Tutorial para registrar um domínio: Registro.BR e Google Domains
  3. Tutorial configurar DNS de domínio: Registro.BR e Google Domains
  4. Tutorial configurar domínio no Ubuntu com servidor Apache

Um detalhe da lista acima. No item 1 (Servidor) o primeiro item ensina a criar uma máquina virtual no seu computador local para funcionar como servidor; a segunda opção é semelhante a primeira, mas o servidor fica online na amazon (Free Tier grátis por 1 ano); o terceiro item é a configuração do servidor com os softwares necessários para seu funcionamento. Então se estiver começando do zero, você pode optar por ter o servidor no seu computador pessoal ou na nuvem, em seguida é necessário configurar ele com o terceiro item (configuração LAMP). As opções 2, 3 e 4 referentes ao domínio são necessárias também.

Tutorial instalar certificados SSL grátis no Ubuntu com servidor Apache

Passo 1

Primeiro passo é se conectar ao servidor por SSH. Neste tutorial realizamos a conexão através do prompt do Sistema Operacional. Estamos utilizando um servidor na Amazon AWS e vamos conectar por SSH utilizando a chave que configuramos:

ssh -i ChaveVPCaws.pem ubuntu@15.229.47.227

Lembrando que você deve se conectar ao seu servidor com suas próprias credenciais. É possível também se conectar com usuário@IP do servidor, sem necessidade de chave, caso seu servidor esteja configurado desta maneira:

ssh ubuntu@15.229.47.227

Ubuntu - Conectar no servidor por ssh utilizando chave de acesso

Passo 2

Agora é interessante verificar qual a versão do sistema operacional ubuntu está utilizando:

lsb_release -a

Neste exemplo, nosso servidor utiliza a Versão 22.04.1 LTS da distribuição Ubuntu do Linux.
Caso utilize outra distribuição, é possível ir no site do Certbot e verificar o passo a passo recomendado para seu setup. Mas no geral, caso utilize o Ubuntu, mesmo que em outra versão, o setup é praticamente o mesmo.
Caso queira saber mais sobre o Certbot, que é o software que vamos utilizar para automatizar o processo de instalação e configuração do certificado, é possível acessar o site do mantenedor:

https://certbot.eff.org/

Ubuntu - verificar versão do sistema operacional ubuntuWebsite oficial certbot

Passo 3

Para iniciar a instalação, o primeiro passo é instalar o gerenciador de pacotes snap. As últimas versões do Ubuntu já vem com o gerenciador de pacotes instalado, então não é preciso realizar esta etapa.

Passo 4

Para garantir que vamos instalar o Certbot na última versão, é interessante realizar o update e upgrade do snap:

sudo snap install core; sudo snap refresh core

Ubuntu - atualizar snap para ultima versão e atualizar pacotes

Passo 5

Um passo importante é garantir que você não possui o Certbot instalado por outro gerenciador de pacotes, como exemplo, o apt. Então nesta etapa vamos tentar desinstalar o Certbot pelo apt. Caso ele não esteja instalado, não tem problema algum, vai receber somente a informação que o pacote não está instalado pelo apt:

sudo apt-get remove certbot

Ubuntu - desinstalar o certbot pelo apt

Passo 6

Agora vamos finalmente instalar o Certbot com o gerenciador de pacotes snap, utilizando o seguinte comando:

sudo snap install --classic certbot

Ubuntu - instalar o certbot

Passo 7

Precisamos agora criar um link logico do snap para a pasta usr:

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Ubuntu - criar link logico snap certbot

Passo 8

Agora precisamos recordar que no tutorial de configuração do domínio no servidor apache, criamos 3 arquivos de configuração para o domínio, mas só ativamos um. No nosso exemplo, estávamos configurando o domínio viniciuspaes.com.br e criamos os 3 arquivos abaixo:

  • viniciuspaes.com.br.http.conf (ativado)
  • viniciuspaes.com.br.ssl.conf (desativado)
  • viniciuspaes.com.br.www.ssl.conf (desativado)

Vamos caminhar até o diretório onde ficam os arquivos de configurações dos websites disponíveis:

cd /etc/apache2/sites-available

Com o comando abaixo, listamos os arquivos já previamente configurados no diretório:

ls -lah

Como podemos verificar, os 3 arquivos de configuração do domínio viniciuspaes.com.br estão presentes.

Agora que já temos o Certbot instalado para gerenciar os certificados grátis da Let’s Encript, podemos ativar os arquivos de configuração relativos ao SSL:

sudo a2ensite viniciuspaes.com.br.ssl.conf
sudo a2ensite viniciuspaes.com.br.www.ssl.conf

Ubuntu - ir até a pasta onde os arquivos de configuração de sites disponíveis do apache ficam armazenadasUbuntu - listar arquivos de sites disponíveis no apache
Ubuntu - ativar arquivo de configuração domínio com ssl
Ubuntu - ativar arquivo de configuração domínio com ssl e www

Passo 9

Necessário agora reiniciar o apache, para que os arquivos de configuração do SSL fiquem ativos:

sudo service apache2 restart

Ubuntu - reiniciar serviço Apache2

Passo 10

Tudo pronto agora para executar o certbot para solicitar e instalar os certificados grátis pelo Let’s Encript. Execute então o comando:

sudo certbot --apache

Na primeira execução, será necessário “criar uma conta”. Deverá cadastrar seu endereço de email (será enviado periodicamente o status dos seus certificados e algum problema caso não consigam renovar automaticamente). Em seguida vão apresentar os termos e condições de uso. E a terceira pergunta será pedindo permissão para compartilhar seu endereço de email de cadastro com terceiros. No nosso exemplo, inseri meu email, aceitei os termos e não tive o desejo de compartilhar meu email com terceiros.

Após estas etapas, no nosso exemplo, temos a opção de criar certificado para o domínio do exemplo (viniciuspaes.com.br) e para o subdomínio (www.viniciuspaes.com.br). Neste caso, o www é visto como um subdomínio.

Você então pode digitar o número de cada opção e teclar enter para ir instalando e configurando individualmente cada certificado, ou deixar em branco e teclar enter, para instalar todas as opções disponíveis.

Será perguntado se deseja criar o redirecionamento para forçar o acesso do usuário sempre por SSL (https). É uma ótima opção.

Ubuntu - executar o certbot para instalar certificados SSLUbuntu - criando conta certbotUbuntu - Certbot, escolher domínio para instalar SSL

Passo 11

Tudo pronto! Seu website já possui acesso com certificado SSL.

Abaixo segue algumas curiosidades do que o Certbot alterou automaticamente em seu arquivo de configuração.

Curiosidades

O que o Certbot alterou no arquivo de configuração para acesso http?

Para fins de curiosidade, as alterações realizadas automaticamente pelo Certbot no arquivo viniciuspaes.com.br.http.conf foi a inserção destas linhas:

RewriteEngine on
RewriteCond %{SERVER_NAME} =www.viniciuspaes.com.br [OR]
RewriteCond %{SERVER_NAME} =viniciuspaes.com.br
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

Esta opção habilita o mod_rewrite, testa se o acesso ao website está sendo realizado pelo alias (www.viniciuspaes.com.br) ou pelo domínio principal (viniciuspaes.com.br), em seguida insere a regra de acesso com redirecionamento permanente. Se reparar, na regra o acesso é sempre com https (forçando o uso do SSL).

O que o Certbot alterou no arquivo de configuração para acesso ssl?

Para fins de curiosidade também, no arquivo de configuração SSL do domínio principal (viniciuspaes.com.br.ssl.conf), o Certbot inseriu estas linhas:

SSLCertificateFile /etc/letsencrypt/live/viniciuspaes.com.br/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/viniciuspaes.com.br/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf

Basicamente ele informa no arquivo de configuração o caminho do arquivo do certificado, o caminho da chave do certificado e inclui o arquivo de configuração das opções de SSL.

O que o Certbot alterou no arquivo de configuração para acesso ssl com www?

Basicamente a mesma coisa do item anterior, só que para o arquivo viniciuspaes.com.br.www.ssl.conf. Os arquivos de certificado e chave são diferentes. Pois ele entende que www é um subdomínio , então gera um certificado próprio para este acesso também:

SSLCertificateFile /etc/letsencrypt/live/www.viniciuspaes.com.br/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.viniciuspaes.com.br/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf

Considerações Finais

O processo de instalação de certificados SSL é bem simples. Isto ocorre pois já deixamos os arquivos de configuração prontos quando configuramos o domínio no servidor. A criação destes arquivos pode parecer um pouco exagerada ou confusa, mas foi a maneira que funcionou melhor com o Certbot. Quando utilizava ServerAlias com WWW juntamente no arquivo de configuração com SSL, o Certbot se confundia na criação dos certificados e não atualizava corretamente os arquivos. Quando você tiver mais experiência em gerenciar os arquivos de configuração, é possível unificar todos os vhost em um arquivo e deixar o mais organizado possível. Mas se seguir o tutorial a risca, não terá problemas.

Conclusões

A utilização de encriptação SSL (TLS) em seu servidor é um passo importante, visto que os mecanismos de busca já sinalizaram que a segurança da troca de informações é relevante no ranking. Caso vislumbre utilizar e-commerce em seu website, é imprescindível ter o certificado instalado e configurado corretamente. Muitos gateways de pagamento exigem essa funcionalidade.

Teve algum problema no processo de instalar o certificado SSL em seu website? Não conseguiu executar alguma etapa deste tutorial? Deixa sua dúvida nos comentários e farei o possível para ajudar!

Vinicius Paes
Visão Geral sobre Privacidade (Privacy Overview)

Este site utuliza "cookies" para que possamos oferecer uma melhor experiência de usuário. As informações dos "cookies" são armazenadas em seu navegador e executam funções como reconhecê-lo quando você retorna ao nosso site e ajudar nossa equipe a entender quais seções do site você considera mais interessantes e úteis.