Configurando SSL com Nginx



Por   

 06/09/2019 

Atuando desde 2005 com tecnologia e internet, concebendo e desenvolvendo processos de inovação.

Olá pessoal que acompanha nosso querido Blog Seeds!

Hoje venho falar sobre uma (não tão) árdua tarefa: ativar ou renovar um certificado SSL. Para que possamos usar nossos sites com https e garantir a segurança de todos que os acessam.

O que é

O Secure Socket Layer (SSL) cria uma ligação criptografada entre um servidor e um browser, funcionando de maneira similar ao protocolo TCP através da criptografia de chaves públicas e privadas. Estas chaves são validadas por empresas que possuem Certificados de Autoridade. Algumas vezes eles são fornecidos gratuitamente, sempre confira com quem hospeda o seu site!

Escolhendo seu Certificado

O processo de ativação/renovação de um certificado SSL é muito suscetível a erros. Não só na parte técnica como também na hora de escolher que certificado comparar. Os serviços providenciam o SSL através de um Certificado de Autoridade (CA) confiável e apresentam variados planos para um site:

Single Domain: São usados para domínios singulares como:

exemplo.com

Nota-se que o exemplo citado abaixo não é coberto e redirecionamentos podem ser necessários

www.exemplo.com

Wildcard: Garante que não só os domínios, mas também os subdomínios são abrangidos pelo certificado.

Domínios:

example.com

Subdomínios *:

.exemplo.com

Multiple Domain: Também conhecidos como certificados SAN ou UC podem ser usados para garantir que múltiplos domínios sejam adicionados ao campo Subject Alternative Name. O certificado pode ser usado com:

exemplo.com, www.exemplo.com, e exemplo.net.

As validações de domínio podem ser feitas, em ordem de asseguração mais baixa para mais alta:

  • Domain Validation (DV);
  • Organization Validation (OV);
  • Extended Validation (EV). Este não vale para o tipo Wildcard.

Alguns CA oferecem planos e condições muito específicas, fique atento para escolher a que melhor se encaixa no seu projeto.

Gerando um CSR e Chave Privada

Depois de ter os pré-requisitos é hora de gerar o seu Certificate Signing Request (CSR) e Chave Privada. Isto pode ser feito usando openssl.

Este processo seguinte irá gerar dois arquivos:

  • exemplo.com.csr que posteriormente deve ser enviado para o CA em questão, para que seja requisitado o certificado SSL.
  • exemplo.com.key é a sua chave privada, e deve ser armazenado da maneira mais segura possível, para que este não caia em mãos erradas.

Para gerar a chave privada e o CSR, use este comando na sua linha de comando (substitua examplo.com pelo o nome do seu domínio):

openssl req -newkey rsa:2048 -nodes -keyout exemplo.com.key -out exemplo.com.csr

Depois disso, várias informações vão ser requisitadas para serem incluídas no seu CSR. A parte mais crucial desta etapa é o campo Common Name. Que deve ser o mesmo nome em que você deseja usar o certificado. Por exemplo:

exemplo, exemplo.com, www.exemplo.com, ou (para um certificado wildcard) *.exemplo.com.

Caso você esteja planejando conseguir um certificado com validação OV ou EV, garanta que todos os outros campos estão preenchidos precisamente com as informações de empresa/organização.

Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Rio Grande do Sul
Locality Name (eg, city) []:Canela
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Minha Empresa
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:exemplo.com
Email Address []:[email protected]

Na hora de enviar a requisição para o CA, é necessário colar o conteúdo do arquivo .CSR. Independente de qual painel você esteja utilizando, depois de colar o conteúdo do CSR, a visualização vai estar bem parecida com a imagem abaixo:

x

Depois disso, o CA contratado pode enviar um ou mais arquivos .crt. Frequentemente diretamente no painel, mas podem também vir anexados por e-mail, dependendo de como trabalha o CA escolhido. 

Para que você garantir que o seu certificado SSL seja instalado com sucesso, deve-se ter em mãos os seguintes arquivos:

  • exemplo.com.key (sua chave privada que foi criada anteriormente)
  • intermediate.crt (ou assinatura do seu CA equivalente)
  • exemplo.com.crt 

Caso você receba múltiplos CRT’s, é recomendado que se faça a junção dos .crt’s criando um arquivo geralmente nomeado como intermediate.crt. Nota-se, no entanto, que  exemplo.com.crt não é adicionado neste novo arquivo, apenas a(s) assinatura(s) do CA. Isso pode ser feito pela linha de comando com facilidade:

cat ca_exemplo1.crt ca_exemplo2.crt ca_exemplo3.crt > intermediate.crt

Depois disso, geralmente pode-se seguir ao painel de hospedagem do seu site, onde o upload destas informações pode ser feita de maneira facilitada. Aqui vou explicar como inserir em um servidor Nginx.

Instalando SSL em um servidor Nginx

Se você quiser fazer a instalação no seu servidor, o primeiro passo é fazer a criação do arquivo chained.crt. Este é construído de forma similar ao intermediate.crt que criamos anteriormente. A diferença é que dessa vez vamos estar incluindo também o conteúdo do nosso exemplo abaixo no arquivo final.

exemplo.com.crt

Então, da mesma forma, podemos fazer este procedimento através da linha de comando:

cat exemplo.com.crt intermediate.crt > exemplo.com.chained.crt

Agora podemos seguir para o diretório onde está localizado o bloco de configurações do seu servidor, aqui, vamos assumir que este está localizado em /etc/nginx/sites-enabled.

Sempre que você souber que algo pode ser resolvido com a linha de comando, sugiro que use-a para resolver. Em geral trabalhar com ela economiza muito tempo. Vamos seguir usando-a para simplesmente navegar até este diretório que estamos querendo chegar:

cd /etc/nginx/sites-enabled

Vou também assumir que você quer adicionar o SSL no Server Block padrão. Neste caso abra o arquivo Default para edição. 

sudo vi default

Em seguida, altere o valor da diretiva listen para que fique como o exemplo abaixo:

listen 443 ssl;

Agora encontre a diretiva server_name e garanta que o valor está exatamente igual ao nome do domínio desejado. Crie também duas diretivas adicionais: ssl_certificate e ssl_certificate_key

  • ssl_certificate: Deve ter como valor o caminho do diretório onde está o arquivo chained.crt criado anteriormente.
  • ssl_certificate_key: O valor aqui contido deve ser o caminho do diretório onde está a chave privada (exemplo.com.key)

No final das contas, vai ficar algo muito parecido com isto:

 server_name example.com;
    ssl_certificate /home/rootzen/example.com.chained.crt;
    ssl_certificate_key /home/rootzen/example.com.key;

O passo final é salvar este bloco que foi editado e reiniciar o servidor.

sudo service nginx restart

Caso se depare com uma situação de renovação de SSL, o processo é o mesmo que é feito na primeira instalação, e uma nova chave privada e csr devem ser gerados.

Traduzido e adaptado de: 

How to Install an SSL Certificate From a Commercial Certificate Authority

Espero que agora você consiga começar mais confiante a desbravar o mundo de uma forma mais https daqui em diante!

- Escrito originalmente por Pietro Rutzen.



Assine nosso blog

Não perca nenhuma novidade!

Assine nosso blog

Não perca nenhuma novidade!