O custo de um certificado SSL está em torno de $100 a $200 por ano. Para uma empresa pequena ou média este custo é baixo. No entanto esse investimento para profissionais autônomos como fotógrafos, desenvolvedores e startups, acaba desestimulando sua adoção.

O Let's Encrypt é um provedor de certificado gratuito e aberto. Uma alternativa barata para todos!

Let's Encrypt

Let's Encrypt é uma autoridade de certificação (CA), que fornece certificados de criptografia TLS (Transport Layer Security ) X.509 gratuitos. Com um processo simples de criação, validação e renovação de certificados. Eliminando a complexidade dos procedimentos atuais.

A organização por trás da Let's Encrypt chama-se Internet Security Research Group (ISRG) e possui muitos patrocinadores oficiais. Abaixo estão os sponsors mais conhecidos.

Sponsors

Isso demonstra que o Let's Encrypt é um player sério no mercado.

letss2azure

Existe uma extensão do Let's Encrypt para App Services do Azure, que permite a obtenção, configuração e renovação de um certificado gratuitamente.

Os certificados possuem 90 dias de validade, após isso a extensão, WebJob, renova automaticamente por mais 90 dias!

Este artigo será um guia passo-a-passo para ajudar na aquisição e instalação do seu HTTPS.

Pré-requisitos

Leia com atenção os pré-requisitos antes de começar. O maior impeditivo é a instancia do Web App, pois as camadas Free e Shared não possuem recursos de SSL / TLS.

Instância do Web App

customdomaisssl-1
ac6e9283-7096-4060-9409-9ef51a242685

A Instância deve ter OBRIGATÓRIAMENTE Custom Domain + SSL habilitados. Atualmente a menor instância que oferece estes recursos é a Basic 1 (B1) com um custo de R$185.

Custom Domain configurado.

É necessário que seu site possua um custom domain configurado. Para conseguir um é necessário adquirir através do RegistroBr.

Se aderiu um agora e precisa de ajuda na configuração do dominio, pode seguir estes tutoriais para configurar seu Custom Domain: Tutorial: mapear um nome DNS personalizado existente para os Aplicativos Web do Azure ou Configurar Dominio Personalizado do Registro.br para Azure

Storage Account

A extensão Azure Let's Encrypt irá instalar um WebJob. Que irá efetuar algumas rotinas, dentre delas a de renovação, mas para isso é necessário possuir uma Storage Account.

Configurando o Let's Encrypt

encrypt

1- Azure PowerShell Module

Primeiro é necessário instalar e configurar o Azure PowerShell Module. Com ele é possivel conectar ao Azure através do PowerShell.

Abra o PowerShell em modo administrador (Windows > PowerShell > Botão Direito > Run As Administrator).

Execute o comando abaixo para instalar o Azure PowerShell

Pode aparecer algumas mensagens. A primeira de Untrusted Repository, pois o PowerShell Gallery não vem configurado por default. A outra é o Nuget desatualizado. Caso apareça confirme as mensagens com Yes ou Yes to All.

Feito isto é necessário carregar o módulo instalado, digite o seguinte comando

Se por um acaso tiver problemas durante a instalação, veja o guia oficial da Microsoft: Install Azure PowerShell with PowerShellGet

2- Configurando uma rota personalizada

No web.config do App Service será necessário configurar uma rota personalizada. Adicione a seguinte rule no rewrite do Web.config

Esta rota será utilizada pelo Let's Encrypt para validar o seu domínio.

3- Registrando um Service Principal

Felizmente esse tópico é a parte com maior dificuldade do tutorial, após isto os próximos passos serão extremamente simples.

Abra o Powershell e ATENÇÃO, não feche ele até a conclusão do tutorial.

Com o PowerShell aberto digite:

Caso tenha mais de uma conta do azure, passe o parâmetro -SubscriptionId (Caso não saiba qual é este parâmetro, mais adiante há uma imagem que exibe onde encontrar).

Além de efetuar o login, foi setado duas variaveis. Agora será criado uma nova application

Estes passos foram necessários para preparar a criação do Service Principal, agora o comando para criar:

E por fim, será atribuido um Contributor ao Service Principal

Ainda com o console do PowerShell aberto, execute o comando $app.ApplicationId e anote o GUID exibido. Anote também o valor de $password, pois será utilizado nos passos seguintes.

Com o Service Principal devidamente configurado o Azure Let's Encrypt todos os pré-requisitos foram atendidos para seguir com a instalação.


have-no-idea
Está se perguntando: O que será que eu fiz no meu Azure?

Eis a resposta: Os comandos acima criaram um novo Application no Azure Active Directory
azurermad

4- Application settings

Após os passos acima, é necessário preparar o Application settings de seu App Service.

Para isso vá no painel do azure e abra os Settings da App Service que será instalado o certificado (App Services > Seu app > Application settings).

As configurações a seguir devem ser colocados na seção Application Settings.

AzureWebJobsDashboard
AzureWebJobsStorage
letsencrypt:Tenant
letsencrypt:SubscriptionId
letsencrypt:ClientId
letsencrypt:ClientSecret
letsencrypt:ResourceGroupName
  • AzureWebJobsDashboard
    • DefaultEndpointsProtocol=https;AccountName={storage account};AccountKey={storage account key}
  • AzureWebJobsStorage
    • DefaultEndpointsProtocol=https;AccountName={storage account};AccountKey={storage account key}

Para conseguir estas informações vá no Storage Account que foi separado (All Resources > Storage Account > Access Keys) e pegue o Storage account name e uma das Keys ou copie a Connection String

storagekey

As informações necessárias para preencher o 1 - letsencrypt:ResourceGroupName, 2 - letsencrypt:SubscriptionId e 3 letsencrypt:Tenant podem ser encontradas de acordo com a figura abaixo:

appservicedata

Obtendo o letsencrypt:Tenant

As outras duas configurações são obtidas no PowerShell

  • letsencrypt:ClientId
    • É o GUID do $app.ApplicationId
  • letsencrypt:ClientSecret
    • É o $password

Salve as configurações. Seu Application Settings estará parecido com a imagem abaixo.

appsettings-final

5- Instalando a Extensão

Para instalar a extensão Azure Let's Encrypt, abra o Kudu (Advanced Tools) do seu site (App Service > Aplicação > Advanced Tools > Go). Pode ser aberto também pela URL https://{nome do seu site}.scm.azurewebsites.net.

kudu

Ao concluir a instalação será necessário reiniciar o Web App. Isto pode ser feito diretamete pelo Kudu. No botão Restart Site no canto superior direito.

6- Configurando a Extensão

Ao abrir a extensão aparecerá uma tela conforme a imagem abaixo
letsapp

Nesta tela será necessário preencher todas as variaveis do passo 4- Application settings.

Na tela seguinte haverá um resumo das SSL's já instaladas (Caso haja alguma).

E por fim na ultima tela, selecione o Hostname que deseja instalar a SSL, pressione o Botão Request and install certificate!

Aguarde a instalação e seu certificado já estará pronto!

Confira o Certificado

Se tudo deu certo, ao acessar seu site por HTTPS, o seguinte certificado será exibido

certificate

Espero que tenham gostado e acima de tudo ajudado! Duvidas, criticas ou sugestões deixe nos comentários.