Emitindo e instalando certificados Let’s Encrypt para IIS de forma fácil

0 132

Aprenda a utilizar o Let’s Encrypt, uma autoridade de certificação gratuita para certificados de criptografia TLS, nos seus servidores com Microsoft IIS.

Certificados podem ser uma verdadeira dor de cabeça, seja para emiti-los e/ou instala-los.

Apesar disso, precisamos entender essa tecnologia e saber como implantá-la, pois segurança na Internet é cada dia mais relevante. Inclusive, o Google já começou a punir sites que não ofereçam acesso via o HTTPS (Protocolo de Transferência de Hipertexto Seguro).

Portanto, se o seu site quiser manter ou subir nos rankings do gigante das buscas, a mudança é obrigatória, sob risco de penalização em seu SEO.

O grande entrave para a adoção massiva do protocolo foi mais uma questão financeira do que tecnológica, visto o custo dos certificados.

Entretanto, uma luz no fim do túnel surgiu com o nascimento do Let’s Encrypt. Uma solução gratuita para a emissão de certificados TLS.

É sobre ele que iremos tratar, demonstrarei como eu emiti e instalei os certificados no Microsoft IIS.

Por que utilizar certificados do Let’s Encrypt?

Dentre as principais razões pelas quais o Let’s Encrypt é uma boa escolha, estão:

  • Gratuidade: redução de custos
  • Possibilidade de automatizá-lo: ganho de tempo
  • Transparência: consultas aos certificados e sua validação

Somam-se a elas, o fato dele estar numa crescente ascensão de adoção desde seu lançamento em 2016. O que nos indica ser uma solução que irá perdurar no mercado.

Crescimento do Let’s Encrypt desde janeiro de 2016

Ferramentas utilizadas

Como dito anteriormente, o processo de gerenciamento dos certificados pode ser automatizado, bastando para isso utilizar qualquer cliente compatível com o protocolo ACME (Ambiente de Gerenciamento Automático de Certificados).

Porém, esse tema não será abordado em nosso artigo. Para este momento faremos o uso de:

  • PowerShell
  • OpenSSL (biblioteca de código aberto dos protocolos SSL e TLS)
  • ZeroSSL (cliente ACME)

Parte 1 – Estabelecendo uma identidade e criando um CSR com ZeroSSL

A criação de uma identidade é o primeiro passo para utilização do Let’s Encrypt. Para isso, vamos gerar uma chave RSA no ZeroSSL, pois toda transação será encriptada e validada com essa chave (guarde-a em lugar seguro).

Ainda nele, faremos também a geração do CSR (Certificate Signing Request), para o caso de precisar reemitir o certificado ou refazer todo processo.

Essa é a tela inicial do passo a passo do ZeroSSL. O e-mail, apesar de opcional é importante que seja preenchido, pois assim, notificações de expiração lhe serão enviadas.

Preencha o domínio com e sem o www, e clique duas vezes em “Next”. A ferramenta irá fazer a geração da chave RSA e do CSR. Em seguida, baixe ambos os arquivos e salve-os em disco.

Seguindo, apenas para fins didáticos, vamos utilizar o OpenSSL para verificarmos as informações dos arquivos.

openssl rsa -in <caminho_da_chave.txt> -noout -text
openssl req -text -noout -verify -in <caminho_do_csr.txt>

Parte 2 – Verificação de domínio

Continuando nosso processo, precisamos validar que somos os detentores do domínio que estamos certificando.

Existe mais de uma forma disso ser feito, iremos pela via da validação HTTP, que nada mais é, uma requisição ao servidor para arquivos que contém informações relativas aos certificados. Para

Clique mais uma vez em “Next”, deixando a opção “HTTP verification” marcada e, você verá uma tela como a abaixo.

Validação via HTTP
Validação via HTTP

No nosso caso, estamos certificando mais de um domínio e, portanto, precisamos validar cada um deles separadamente.

Para seguirmos, precisamos baixar esses arquivos e colocá-los visíveis no caminho especificado. Lembrando que esse diretório precisa ser criado na raiz do site.

O Windows, possui uma limitação para criação de diretórios iniciados com ponto via Windows Explorer. Entretanto, via linha de comando você conseguirá sem nenhum problema:

mkdir .well-known/acme-challenge/

Você terá algo parecido com a imagem abaixo.

Arquivos dentro do diretório esperado pelo ZeroSSL

Após isso, para testar se está tudo certo, basta clicar no link da página e verificar se o download irá ocorrer. Mas provavelmente você terá a tela abaixo, isso porque por padrão, o IIS não entrega arquivos sem extensão.

Validação via HTTP
Erro do IIS ao baixar arquivo sem extensão

Para possibilitar o download, adicione a nível de site no IIS a configuração tal qual a imagem abaixo. Em seguida, vá até o ZeroSSL e teste novamente se o arquivo será baixado. Se tudo ocorrer bem, clique em “Next”, aguarde a geração do certificado e remova a entrada do MIME.

Configuração do MIME Type no IIS

Abaixo temos a tela final de geração do certificado. Tenha atenção para realizar o download tanto do certificado quanto da chave privada do domínio (se você já tiver gerado o CSR antes, ele não lhe fornecerá a chave privada novamente nessa tela).

Página final da geração do certificado

Renomeie o certificado alterando sua extensão para “.cer”, assim, será possível abri-lo e verificar seus dados. Mas não clique em instalar.

Parte 3 – Criando o arquivo PFX da chave e certificado

Para facilitar a instalação do certificado e da chave nos servidores Windows, vamos gerar um arquivo PFX contendo ambos e protegidos por uma senha forte (não crie sem uma senha sob nenhuma circunstância).

openssl pkcs12 -export -out <caminho_do_pfx> -inkey <caminho_chave_do_certificado> -in <caminho_do_certificado>

Parte 4 – Instalando o PFX no servidor

Envie o PFX criado para o servidor que responderá pelo domínio e dê um duplo clique no mesmo. Escolha como repositório “Máquina Local”, insira a senha e clique em “Avançar”.

Em seguida, para verificar que o certificado foi realmente instalado, execute o seguinte comando no Executar: certlm.msc.

Tela com os certificados instalados

Parte 5 – Adicionando o binding no IIS

Para finalizar a configuração é necessário estabelecer os bindings no IIS para o uso do protocolo HTTPS.

Se o servidor possuir mais de um site com SSL, é preciso habilitar o “Require Server Name Indication”, porém alguns navegadores antigos não dão suporte a essa funcionalidade.

Configuração do binding no IIS
Configuração do binding no IIS

Feita essa configuração, seu site passará a contar com o certificado e funcional via HTTPS.

Chrome exibindo que a conexão com o site é segura

Bom, essa foi minha jornada na implantação de um certificado em um dos meus sites. Espero poder ter contribuído um pouco com o que aprendi. Meu próximo passo é fazer a automatização do processo, visto que a validade dos certificados é de apenas 90 dias.

Fiquem a vontade para comentar e esclarecer quaisquer dúvidas. Até mais!

Deixe uma resposta

Seu endereço de email não será publicado.