Como obter um certificado SSL Wildcard de graça

Introdução

Você provavelmente precisou trabalhar em um ambiente de testes para configurações de ADFS ou uma aplicação web e se deparou com o fato de ser necessário utilizar um certificado SSL. Ao pesquisar preços encontrou certificados com um valor bastante proibitivo, certo? Nesse post quero apresentar como utilizar certificados wildcard (sim, para qualquer host) sem gastar um único centavo e em um método bem simples.

Requisitos

Para realizar este passo a passo, você precisará dos seguintes componentes:
  • Uma assinatura do Microsoft Azure Ativa;
  • Permissão para provisionar um plano básico no Azure App Service;
  • OpenSSL;
  • Domínio próprio registrado publicamente;
Para este laboratório, criei um aplicativo web no wordpress chamado http://www.testecloud.com.br e atualmente já está publicado e registrado.

Criando o certificado SSL

  • Acesse a página https://www.sslforfree.com/ e na página principal insira o seu domínio conforme a imagem abaixo:
  • Insira seu domínio desta maneira: *.dominio.com.br, dominio.com.br. Isso garantirá que não só os hosts do seu domínio, mas também a raiz dele, utilizem da mesma thumbprint na hora de configurar a bind do certificado;
  • Clique em Create Free SSL Certificate, em seguida, vá para o rodapé da página e clique em Manually Verify Domain;
  • Você receberá dois registros de DNS que deverão ser inseridos no seu DNS público. Insira os registros conforme informado. No meu caso estou, o gerenciamento é feito pelo Azure DNS.
Obtendo informação dos registros: Inserindo registros no meu DNS público (Clique aqui para ver como gerenciar seu DNS no Azure):
Observação: Se vocês notarem eu deixei o TTL em 1 segundo. Isso acontece porque a próxima etapa exige a validação dos registros para ver se está tudo certo para a criação do certificado.
  • Clique em “Verify _acme-challenge.dominio.com.br” e você será direcionado para uma nova página que irá fazer uma checagem da propagação do DNS. Isso acontece porque primeiro você deve provar que você é dono do domínio o qual você quer obter o certificado SSL. Quando estiver propagado e replicado você verá uma tela mais ou menos assim:
  • Ao receber esta tela está tudo certo, só clicar em Download SSL Certificate
  • O conteúdo de cada certificado será mostrado na próxima tela e se você quiser, pode salvar os arquivos para utilização posterior. Ou então, mais facilmente, você pode baixar o certificado + chave privada por um arquivo zip. É só rolar a página mais para baixo e clicar em Download All SSL Certificate Files.
  • Pronto, terminamos a parte inicial de obter o certificado!
Importante: Certificados SSL criado para um host específico têm validade de 90 dias. No entanto, certificados Wildcard têm validade de 60 dias. Sendo assim, recomendo que você se registre para ser notificado sobre a expiração do certificado SSL.

Convertendo o certificado e importando ao Web App

Converter o certificado

O primeiro ponto é, os web apps do Azure aceitam apenas arquivos .pfx e será necessário utilizar uma senha para tal. Utilize sua console bash porque nesta etapa vamos usar o OpenSSL para fazer esta conversão. Não vou abordar tanto sobre como abrir o bash ou abrir o OpenSSL então vou me restringir às etapas principais.
  • Pegue o arquivo zip e descompacte;
  • Acesse a pasta e você encontrará 3 arquivos: certificate.crt, private.key e ca_bundle.crt;
  • Abra o bash e insira este comando:
openssl pkcs12 -export -out webappssl.pfx -inkey private.key -in certificate.crt -certfile ca_bundle.crt
  • Defina uma senha para o seu certificado;
  • Confirme e o seu certificado estará pronto!

Importando o certificado no Aplicativo Web

Esta configuração funciona tanto para aplicativos web baseados em Windows ou Linux. O que você precisa se atentar é que para ter suporte ao SSL você deve usar um App Service na camada Básica ou superior. Faça o Upload do SSL em Upload Certificate na blade SSL Settings.
  • Mantenha a opção Private certificate (.pfx)
  • Clique em Select a File para selecionar o arquivo .pfx e insira a senha que foi definida anteriormente.
  • Clique em Upload e o certificado será carregado para o WebApp
  • Se tudo der certo, você verá uma notificação de sucesso
Depois de carregado, seu certificado SSL estará disponível no acervo do Azure, juntamente com a data de validade dele. Ele estará disponível na tela SSL Settings, próximo ao rodapé. Na área Bindings, dentro do SSL Settings, nós vamos adicionar dois bindings: um para o host www.testecloud.com.br e outro para testecloud.com.br, desta forma, mesmo que os usuários utilizem a raiz do domínio, será utilizado o certificado. Em Hostname, selecione qual o host você deseja amarrar ao certificado. Em Private certificate Thumbprint Selecione o Thumbprint que aponta aos domínios *.dominio.com.br e dominio.com.br. Por fim, mantenha o SSL Type como SNI SSL. Um último toque seria finalizar obrigando sempre utilizar protocolo HTTPS ao acessar seu aplicativo web. Vá para SSL Configuration e ative a configuração, conforme mostra a figura:

Teste sua configuração

Para saber se deu certo, basta acessar a URL de seu webapp. Aparecendo a notificação de Seguro significa que seu aplicativo já está trabalhando com HTTPS

Conclusão

Neste post vocês tiveram a oportunidade de criar gratuitamente um certificado SSL e publicá-lo em uma aplicação web hospedada no Azure. Claro que, por ser um certificado SSL Wildcard, você poderá utilizá-lo com várias outras situações e quis deixar esta como uma das formas. Por hoje é só!