Introdução
Este tutorial mostrará como adquirir e instalar um certificado SSL de uma Autoridade de Certificação (CA) confiável e comercial. Certificados SSL permitem que servidores web criptografem seu tráfego e também oferecem um mecanismo para validar identidades de servidor para seus visitantes. Websites que utilizam SSL são acessados através do protocolo https://
.
Antes do meio da década de 2010, muitos websites 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 Let’s Encrypt. Eles expiram a cada 3 meses, geralmente exigindo 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 validam a propriedade legal de sua presença na web, ou Certificados Wildcard que correspondem automaticamente a todos os subdomínios possíveis do seu site (como loja.exemplo.com) sem que você precise registrá-los 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 uma operação comercial muito grande, considere adquirir um certificado de uma AC 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
Há vários pré-requisitos para tentar obter um certificado SSL de uma AC comercial:
-
Um nome de domínio registrado. Este tutorial usará
example.com
como exemplo. Você pode adquirir um nome de domínio na Namecheap, obter um gratuitamente com o Freenom ou usar o registrador de domínios 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 “tipo administrativo” no próprio domínio. As autoridades certificadoras que emitem certificados SSL geralmente validam o controle de 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 receber um certificado de Validação Estendida, você também precisará fornecer à CA documentação para estabelecer a identidade legal do proprietário do site, entre outras coisas.
-
Configuração de registros DNS para seu servidor. Se você estiver usando a DigitalOcean, consulte nossa documentação DNS para obter detalhes sobre como adicioná-los.
Este tutorial fornecerá instruções de configuração para um servidor Ubuntu 22.04 configurado seguindo este tutorial configuração inicial do servidor para Ubuntu 22.04, incluindo um usuário não root habilitado para sudo e um firewall. A maioria das distribuições Linux modernas funcionará de forma 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 seu domínio.
Passo 1 – Escolhendo Sua Autoridade de Certificação
Se você não tem certeza de qual Autoridade de Certificação usar, há alguns fatores a considerar.
Membros de Programas de Certificado Raiz
O ponto mais crucial é que a AC que você escolheu seja membro dos programas de certificados raiz dos sistemas operacionais e navegadores web mais comumente utilizados, ou seja, seja uma AC “confiável”, e que seu certificado raiz seja confiável pelos navegadores comuns e outros softwares. Se o certificado SSL do seu site for assinado por uma AC confiável, sua identidade será considerada válida por softwares que confiam na AC.
A maioria das ACs comerciais que você encontrará serão membros dos programas comuns de certificados raiz, mas não custa verificar antes de fazer a compra do 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 uma variedade de 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,
example.com
. Note que subdomínios adicionais, comowww.example.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
*.example.com
também pode ser usado parawww.example.com
estore.example.com
. - Múltiplos Domínios: Conhecido como um certificado SAN ou UC, podem ser usados com múltiplos domínios e subdomínios que são adicionados ao campo Nome Alternativo do Assunto. Por exemplo, um único certificado multi-domínio poderia ser usado com
example.com
,www.example.com
, eexample.net
Além dos tipos de certificados mencionados, existem diferentes níveis de validações que as ACs oferecem:
- Validação de Domínio (DV): Certificados DV são emitidos após a AC validar que o solicitante possui ou controla o domínio em questão
- Validação de Organização: Certificados OV só podem ser emitidos após a AC validar a identidade legal do solicitante
- Validação Estendida (EV): Certificados EV só podem ser emitidos após a AC validar a identidade legal, entre outras coisas, do solicitante, de acordo com um conjunto rigoroso de diretrizes. O propósito desse tipo de certificado é fornecer uma garantia adicional da legitimidade da identidade de sua organização aos visitantes do seu site. Certificados EV podem ser de domínio único ou múltiplo, mas não coringa
Recursos Adicionais
Muitas CAs oferecem uma grande variedade de recursos “extras” para se diferenciarem dos demais fornecedores de certificados SSL. Alguns desses recursos podem acabar economizando dinheiro para você, então é 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 de certificados gratuitas ou um certificado com preço único de domínio que funcione para www.
e o basename do domínio, por exemplo, www.example.com
com um SAN de example.com
.
Passo 2 – Gerar uma CSR e Chave Privada
Depois de ter seus pré-requisitos organizados e saber o tipo de certificado que você precisa, é hora de gerar uma solicitação de assinatura de certificado (CSR) e uma chave privada.
Se você planeja usar o Apache HTTP ou o 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 principal, mas sinta-se à vontade para armazená-los em qualquer local seguro em seu servidor:
Para gerar uma chave privada, chamada example.com.key
, e uma CSR, chamada example.com.csr
, execute este comando (substitua o 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(a) a fornecer várias linhas de informações que serão incluídas em sua solicitação de certificado. A parte mais importante é o campo Nome Comum
, que deve corresponder ao nome com o qual você deseja usar seu certificado – por exemplo, example.com
, www.example.com
, ou (para uma solicitação de certificado curinga) *.example.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 em segurança. 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 sua solicitação 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 adequadas para 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á uma amostra de suas ofertas até 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 também provavelmente terá uma etapa de “Aprovação”, 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, o certificado será enviado por email ao administrador nomeado. Copie e salve-os no seu servidor no mesmo local em que 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 no seu servidor web, mas primeiro, você pode precisar fazer algumas alterações no seu firewall.
Passo 4 – Atualizando seu Firewall para Permitir HTTPS
Se você tiver o firewall ufw
ativado, 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
durante a instalação.
Você pode verificar as configurações atuais digitando:
- sudo ufw status
Se você receber uma saída contendo apenas Nginx HTTP
ou Apache
, apenas o tráfego HTTP está 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ê 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 em seu servidor web. Isso envolve adicionar algumas linhas relacionadas ao SSL à configuração do software do 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 maneira semelhante. Este tutorial também pressupõe o seguinte:
- 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
example.com.crt
. - O(s) certificado(s) intermediário(s) da CA fornecido(s) pelo seu provedor estão em um arquivo chamado
intermediate.crt
Observação: Em um ambiente de produção, esses arquivos devem ser armazenados em um local acessível apenas pelo processo do servidor web (geralmente root
), 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 servidores múltiplos.
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 example.com.crt
, você pode usar o comando cat
para concatenar 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;
…
Próximo passo, encontre 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';
…
Finalmente, para redirecionar as 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 o nano
, pressione Ctrl+X
, então, 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 problemas, reinicie o Nginx para habilitar o SSL sobre HTTPS:
- sudo systemctl restart nginx
Teste acessando seu site via HTTPS, por exemplo, https://example.com
. Você também deve tentar se conectar via HTTP, por exemplo, http://example.com
, para garantir que o redirecionamento esteja funcionando corretamente.
Apache
Estes 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
Encontre a entrada <VirtualHost *:80>
e modifique-a para que seu servidor web escute na porta 443
:
…
<VirtualHost *:443>
…
A seguir, 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 as solicitações HTTP (porta 80) não serão atendidas. Para redirecionar as 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.
Ative o módulo SSL do Apache executando este comando:
- sudo a2enmod ssl
Agora, reinicie o Apache para carregar a nova configuração e habilitar 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 ser necessário comprar um certificado SSL de uma CA 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 estiver trabalhando com balanceadores de carga.