Introdução
Este tutorial mostrará como adquirir e instalar um certificado SSL de uma Autoridade de Certificação (CA) confiável e comercial. Os certificados SSL permitem que os servidores da web criptografem seu tráfego e também oferecem um mecanismo para validar as identidades dos servidores para seus visitantes. Os sites que usam SSL são acessados via protocolo https://
.
Antes de meados da década de 2010, muitos sites menores nem sempre usavam SSL ou HTTPS. Desde então, as expectativas de segurança aumentaram e o projeto Let’s Encrypt foi criado para fornecer certificados SSL gratuitos e confiáveis em grande escala, permitindo que quase todos usem HTTPS conforme necessário.
No entanto, existem algumas limitações nos certificados do Let’s Encrypt. Eles expiram a cada 3 meses, exigindo geralmente que você tenha um script de renovação automática funcionando e podem ser complicados de usar em ambientes onde isso não é possível. O Let’s Encrypt também não fornece certificados de Validação Estendida que validem a propriedade legal de sua presença na web, ou Certificados Wildcard que correspondam automaticamente a todos os subdomínios possíveis do seu site (como loja.exemplo.com) sem que você precise registrar cada um deles manualmente.
Para a maioria dos usuários, essas não serão limitações significativas. Let’s Encrypt é uma opção popular para muitos sites pessoais e comerciais. No entanto, se você tiver requisitos específicos de software empresarial ou operar uma grande operação comercial, deve considerar a compra de um certificado de uma Autoridade de Certificação comercial.
Este tutorial abrange como selecionar e implantar um certificado SSL de uma autoridade de certificação confiável. Após adquirir seu certificado SSL, este tutorial abordará a instalação no servidor web Nginx e Apache.
Pré-requisitos
Existem vários pré-requisitos antes de tentar obter um certificado SSL de uma AC comercial:
-
Um nome de domínio registrado. Este tutorial usará
example.com
como exemplo. Você pode comprar um nome de domínio na Namecheap, obter um gratuitamente com Freenom ou usar o registrador de domínio de sua escolha. -
Acesso a um dos endereços de e-mail no registro WHOIS do seu domínio ou a um endereço de e-mail do tipo “admin” no próprio domínio. As autoridades certificadoras que emitem certificados SSL geralmente validam o controle do domínio enviando um e-mail de validação para um dos endereços no registro WHOIS do domínio ou para um endereço de e-mail genérico de administração no próprio domínio. Para obter um certificado de Validação Estendida, também será necessário fornecer à AC documentação para estabelecer a identidade legal do proprietário do site, entre outras coisas.
-
Configuração de registros DNS para o seu servidor. Se estiver usando a DigitalOcean, consulte nossa documentação de DNS para obter detalhes sobre como adicioná-los.
Este tutorial fornecerá instruções de configuração para um servidor Ubuntu 22.04, configurado seguindo o tutorial Configuração inicial do servidor para o Ubuntu 22.04, incluindo um usuário não-root com sudo e um firewall. A maioria das distribuições Linux modernas funcionará de maneira semelhante.
Você também deve ter um servidor web, como o Nginx ou Apache, instalado, seguindo Como instalar o Nginx no Ubuntu 22.04 ou Como instalar o servidor web Apache no Ubuntu 22.04. Certifique-se de ter um bloco de servidor (ou host virtual Apache) para o seu domínio.
Etapa 1 – Escolhendo sua Autoridade de Certificação
Se você não tem certeza de qual Autoridade de Certificação usar, há alguns fatores a serem considerados.
Membros do Programa de Certificados Raiz
A questão mais crucial é que a AC que você escolhe é membro dos programas de certificados raiz dos sistemas operacionais e navegadores mais comumente usados, ou seja, é uma AC “confiável”, e seu certificado raiz é confiado pelos navegadores comuns e outros softwares. Se o certificado SSL do seu site for assinado por uma AC confiável, sua identidade é considerada válida por software que confia na AC.
A maioria das ACs comerciais que você encontrará será membro dos programas comuns de certificados raiz, mas não custa verificar antes de fazer a compra do seu certificado. Por exemplo, a Apple publica sua lista de certificados raiz SSL confiáveis.
Tipos de Certificados
Assegure-se de escolher uma AC que ofereça o tipo de certificado que você precisa. Muitas ACs oferecem variações desses tipos de certificados sob diferentes nomes e estruturas de preços. Aqui está uma breve descrição de cada tipo:
- Domínio Único: Usado para um único domínio, por exemplo,
exemplo.com
. Observe que subdomínios adicionais, comowww.exemplo.com
, não estão incluídos - Curinga: Usado para um domínio e quaisquer de seus subdomínios. Por exemplo, um certificado curinga para
*.exemplo.com
também pode ser usado parawww.exemplo.com
eloja.exemplo.com
- Domínio Múltiplo: Conhecidos como certificados SAN ou UC, estes podem ser usados com vários domínios e subdomínios adicionados ao campo Nome Alternativo do Sujeito. Por exemplo, um único certificado de domínio múltiplo poderia ser usado com
example.com
,www.example.com
eexample.net
Além dos tipos de certificados mencionados, existem diferentes níveis de validação que as ACs oferecem:
- Validação de Domínio (DV): Certificados DV são emitidos após a AC validar que o solicitante é proprietário ou controla o domínio em questão
- Validação de Organização (OV): Certificados OV só podem ser emitidos após a AC emitente validar a identidade legal do solicitante
- Validação Estendida (EV): Certificados EV só podem ser emitidos após a AC emitente validar a identidade legal, entre outras coisas, do solicitante, de acordo com um conjunto estrito de diretrizes. O objetivo deste tipo de certificado é fornecer garantia adicional da legitimidade da identidade da sua organização aos visitantes do seu site. Os certificados EV podem ser de domínio único ou múltiplo, mas não wildcard
Recursos Adicionais
Muitas Autoridades de Certificação oferecem uma ampla variedade de recursos “extra” para se diferenciarem dos demais fornecedores de certificados SSL. Alguns desses recursos podem acabar economizando dinheiro, portanto, é importante que você avalie suas necessidades em relação às ofertas antes de fazer uma compra. Exemplos de recursos a serem observados incluem reemissões gratuitas de certificados ou um certificado com preço para um único domínio que funcione para www.
e o nome base do domínio, por exemplo, www.example.com
com um SAN de example.com
Passo 2 – Geração de CSR e Chave Privada
Depois de organizar seus pré-requisitos e saber o tipo de certificado de que precisa, é hora de gerar uma solicitação de assinatura de certificado (CSR) e uma chave privada.
Se você planeja usar o Apache HTTP ou Nginx como seu servidor web, pode usar o comando openssl
para gerar sua chave privada e CSR em seu servidor web. Neste tutorial, você pode manter todos os arquivos relevantes em seu diretório pessoal, mas sinta-se à vontade para armazená-los em qualquer local seguro em seu servidor:
Para gerar uma chave privada, chamada example.com.key
, e um CSR, chamado example.com.csr
, execute este comando (substitua example.com
pelo nome do seu domínio):
- openssl req -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr
Neste ponto, você será solicitado várias linhas de informações que serão incluídas no seu pedido de certificado. A parte mais importante é o campo Nome Comum
, que deve corresponder ao nome que você deseja usar com o seu certificado – por exemplo, exemplo.com
, www.exemplo.com
, ou (para um pedido de certificado curinga) *.exemplo.com
. Se você pretende obter um certificado OV ou EV, certifique-se de que todos os outros campos reflitam com precisão os detalhes da sua organização ou empresa. Fornecer uma “senha de desafio” não é necessário.
Por exemplo:
OutputCountry Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:New York
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:example.com
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Isso irá gerar um arquivo .key
e um arquivo .csr
. O arquivo .key
é sua chave privada e deve ser mantido seguro. O arquivo .csr
é o que você enviará para a CA para solicitar seu certificado SSL.
- ls example.com*
Outputexample.com.csr example.com.key
Você precisará copiar e colar seu CSR ao enviar seu pedido de certificado para sua CA. Para imprimir o conteúdo do seu CSR, use cat
:
cat example.com.csr
Agora você está pronto para comprar um certificado de uma CA.
Passo 3 – Compra e Obtenção de um Certificado
Existem muitos provedores comerciais de CA, e você pode comparar e contrastar as opções mais apropriadas para a sua própria configuração. Por exemplo, a Namecheap atua como revendedora de certificados SSL e já mudou de provedores de CA upstream no passado para oferecer o melhor valor. Atualmente, eles oferecem certificados da Comodo CA. Aqui está um exemplo de suas ofertas a partir de dezembro de 2022:
Após fazer uma seleção, você precisará fazer o upload do CSR que gerou na etapa anterior. Seu provedor de CA provavelmente também terá uma etapa de “Aprovador”, que enviará um email de solicitação de validação para um endereço no registro WHOIS do seu domínio ou para um endereço do tipo administrador do domínio para o qual está obtendo um certificado.
Após aprovar o certificado, ele será enviado por email para o administrador nomeado. Copie e salve-os em seu servidor no mesmo local onde gerou sua chave privada e CSR. Nomeie o certificado com o nome de domínio e uma extensão .crt
, por exemplo, example.com.crt
, e nomeie o certificado intermediário intermediate.crt
.
O certificado está agora pronto para ser instalado em seu servidor web, mas primeiro, você pode precisar fazer algumas alterações no seu firewall.
Etapa 4 – Atualizando seu Firewall para Permitir HTTPS
Se você tiver o firewall ufw
habilitado conforme recomendado pelo nosso guia de configuração do Ubuntu 22.04, será necessário ajustar as configurações para permitir o tráfego HTTPS. Tanto o Nginx quanto o Apache registram alguns perfis com o ufw
após a instalação.
Você pode verificar a configuração atual digitando:
- sudo ufw status
Se você receber uma saída contendo apenas Nginx HTTP
ou Apache
, apenas o tráfego HTTP será permitido para o servidor web:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Para permitir também o tráfego HTTPS, permita o perfil Nginx Full
ou Apache
Full` e exclua a permissão redundante do perfil HTTP:
- sudo ufw allow 'Nginx Full'
- sudo ufw delete allow 'Nginx HTTP'
Isso deve produzir um resultado como este:
- sudo ufw status
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
Na etapa final, você irá instalar o certificado.
Etapa 5 – Instalando um Certificado no seu Servidor
Após adquirir seu certificado da CA de sua escolha, você precisa instalá-lo no seu servidor web. Isso envolve adicionar algumas linhas relacionadas ao SSL na configuração do software do seu servidor web.
Este tutorial abordará a configuração do Nginx e do Apache no Ubuntu 22.04, mas a maioria das distribuições Linux modernas funcionará de forma semelhante. Este tutorial também faz as seguintes suposições:
- A chave privada, o certificado SSL e, se aplicável, os certificados intermediários da CA estão localizados em um diretório pessoal, em
/home/sammy
- A chave privada é chamada de
example.com.key
- O certificado SSL é chamado de
example.com.crt
- O(s) certificado(s) intermediário(s) da CA retornados pelo seu provedor estão em um arquivo chamado
intermediate.crt
Nota: Em um ambiente de produção, esses arquivos devem ser armazenados em algum lugar que apenas o processo do servidor web (geralmente root
) possa acessar, e a chave privada deve ser mantida segura. Por exemplo, o Let’s Encrypt armazena os certificados que gera em /etc/letsencrypt
. Exemplos de produção variarão devido à complexidade das configurações de vários servidores.
Nginx
Estes são os passos para implantar manualmente um certificado SSL no Nginx.
Se sua CA retornou apenas um certificado intermediário, você deve criar um único arquivo de certificado “encadeado” que contenha seu certificado e os certificados intermediários da CA.
Supondo que seu arquivo de certificado seja chamado de example.com.crt
, você pode usar o comando cat
para juntar arquivos e criar um arquivo combinado chamado example.com.chained.crt
:
- cat example.com.crt intermediate.crt > example.com.chained.crt
Usando o nano
ou seu editor de texto favorito, abra o arquivo de bloco de servidor padrão do Nginx para edição:
- sudo nano /etc/nginx/sites-enabled/default
Encontre a diretiva listen
e modifique-a para listen 443 ssl
:
…
server {
listen 443 ssl;
…
Em seguida, localize a diretiva server_name
dentro do mesmo bloco de servidor e certifique-se de que seu valor corresponda ao nome comum do seu certificado. Além disso, adicione as diretivas ssl_certificate
e ssl_certificate_key
para especificar os caminhos dos seus arquivos de certificado e chave privada:
…
server_name example.com;
ssl_certificate /home/sammy/example.com.chained.crt;
ssl_certificate_key /home/sammy/example.com.key;
…
Para permitir apenas os protocolos e cifras SSL mais seguros, adicione as seguintes linhas ao arquivo:
…
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
…
Por fim, para redirecionar solicitações HTTP para HTTPS por padrão, você pode adicionar um bloco de servidor adicional no topo do arquivo:
server {
listen 80;
server_name example.com;
rewrite ^/(.*) https://example.com/$1 permanent;
}
…
Salve e feche o arquivo. Se estiver usando nano
, pressione Ctrl+X
, depois, quando solicitado, Y
e depois Enter.
Antes de reiniciar o Nginx, você pode validar sua configuração usando nginx -t
:
- sudo nginx -t
Se não houver nenhum problema, reinicie o Nginx para habilitar SSL sobre HTTPS:
- sudo systemctl restart nginx
Teste acessando seu site via HTTPS, por exemplo, https://example.com
. Você também vai querer tentar se conectar via HTTP, por exemplo, http://example.com
, para garantir que o redirecionamento esteja funcionando corretamente.
Apache
Esses são os passos para implantar manualmente um certificado SSL no Apache.
Usando o nano
ou seu editor de texto favorito, abra o arquivo de host virtual padrão do Apache para edição:
- sudo nano /etc/apache2/sites-available/000-default.conf
Localize a entrada <VirtualHost *:80>
e modifique para que seu servidor web escute na porta 443
:
…
<VirtualHost *:443>
…
Em seguida, adicione a diretiva ServerName
, se ainda não existir:
…
ServerName example.com
…
Em seguida, adicione as seguintes linhas para especificar os caminhos do seu certificado e chave:
…
SSLEngine on
SSLCertificateFile /home/sammy/example.com.crt
SSLCertificateKeyFile /home/sammy/example.com.key
SSLCACertificateFile /home/sammy/intermediate.crt
…
Neste ponto, seu servidor está configurado para ouvir apenas HTTPS (porta 443), então solicitações para HTTP (porta 80) não serão atendidas. Para redirecionar solicitações HTTP para HTTPS, adicione o seguinte no topo do arquivo (substitua o nome em ambos os lugares):
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
…
Salve e feche o arquivo. Se estiver usando nano
, pressione Ctrl+X
, então quando solicitado, Y
e depois Enter.
Habilite o módulo SSL do Apache executando este comando:
- sudo a2enmod ssl
Agora, reinicie o Apache para carregar a nova configuração e habilitar o TLS/SSL sobre HTTPS.
- sudo systemctl restart apache2
Teste acessando seu site via HTTPS, por exemplo, https://example.com
. Você também vai querer tentar conectar via HTTP, por exemplo, http://example.com
para garantir que o redirecionamento esteja funcionando corretamente.
Conclusão
Neste tutorial, você aprendeu como determinar quando pode precisar comprar um certificado SSL de uma AC comercial, e como comparar e contrastar as opções disponíveis. Você também aprendeu como configurar o Nginx ou Apache para suporte HTTPS, e como adaptar suas configurações para produção.
Em seguida, você pode querer ler sobre outros casos de uso de SSL, como quando trabalhar com balanceadores de carga.