Emitindo e instalando certificados Let’s Encrypt para IIS de forma fácil
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.
Leia mais:
- A segurança dos e-mails aprimorada com DKIM e SPF
- Dominando a Arte da Segurança Web: Entendendo e Prevenindo Ataques XSS em Aplicações Web .NET
- HTTPS e .NET: Por que o Tráfego Criptografado é Crucial?
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.
![](http://www.escoladaprogramacao.com.br/wp-content/uploads/2019/11/crescimento_lets_encrypt.png)
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.
![](http://www.escoladaprogramacao.com.br/wp-content/uploads/2019/11/lets_encrypt_passo1-1024x532.png)
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.
![](http://www.escoladaprogramacao.com.br/wp-content/uploads/2019/11/lets_encrypt_passo2-1024x532.png)
Seguindo, apenas para fins didáticos, vamos utilizar o OpenSSL para verificarmos as informações dos arquivos.
![](http://www.escoladaprogramacao.com.br/wp-content/uploads/2019/11/lets_encrypt_openssl_1.png)
![](http://www.escoladaprogramacao.com.br/wp-content/uploads/2019/11/lets_encrypt_openssl_2.png)
Parte 2 – Verificação de domínio
Continuando nosso processo, precisamos validar que somos os detentores do domínio que estamos certificando.
Solicitação de Verificação
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 isso, 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](http://www.escoladaprogramacao.com.br/wp-content/uploads/2019/11/lets_encrypt_passo3-1024x627.png)
No nosso caso, estamos certificando mais de um domínio e, portanto, precisamos validar cada um deles separadamente.
Validação do domínio
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.
![](http://www.escoladaprogramacao.com.br/wp-content/uploads/2019/11/lets_encrypt_passo4.png)
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](http://www.escoladaprogramacao.com.br/wp-content/uploads/2019/11/lets_encrypt_passo5-768x129.png)
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.
![](http://www.escoladaprogramacao.com.br/wp-content/uploads/2019/11/lets_encrypt_passo6.png)
Download do certificado
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).
![](http://www.escoladaprogramacao.com.br/wp-content/uploads/2019/11/lets_encrypt_passo7.png)
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 (Win+R): certlm.msc.
![](http://www.escoladaprogramacao.com.br/wp-content/uploads/2019/11/lets_encrypt_passo8.png)
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](http://www.escoladaprogramacao.com.br/wp-content/uploads/2019/11/lets_encrypt_passo9.png)
Feita essa configuração, seu site passará a contar com o certificado e funcional via HTTPS.
![](http://www.escoladaprogramacao.com.br/wp-content/uploads/2019/11/lets_encrypt_passo10.png)
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!
Os comentários estão fechados, mas trackbacks E pingbacks estão abertos.