Azure App Service e Cloudflare com SSL Full (strict)
Vamos configurar o Cloudflare como proxy reverso e Azure Web Apps como serviço de web. Buscando a melhor configuração de segurança que o Cloudflare oferece na camada gratuíta e cadeado verde.
Ao final teremos a seguinte configuração:
- CloudFlare como proxy reverso
- Azure Web App como serviço web
- SSL válido (cadeado verde)
- SSL full trust entre Cloudflare e Azure Web Apps (Cloudflare validando certificado do lado do servidor)
- Domínios para aplicação / (A Name) e https://www.rmauro.com.br (C Name)
Nosso objetivo além do SSL válido (cadeado verde), é criptografia ponta a ponta.
Criptografia entre o Cloudflare e o usuário e entre Cloudflare e o Azure Web App.
Pré-requisitos
- Conta no Cloudflare
- Azure Web Apps com aplicativo rodando (pode ser o blank nativo do App Service)
- App Service Plan com plano mínimo Basic
- OpenSSL instalado
- Domínio configurado no Cloudflare
Obs.: Camadas shared e free do Azure App Service Plan não permitem realizar a configuração SSL.
Conhecendo o ambiente
*Blog Ghost rodando no App Service.
Domínio https://ghost-azure5ae4.azurewebsites.net*
Aplicativo Web App Service
Cloudflare criado
Configurando o domínio do Cloudflare
Primeiro vá até a aba de Custom domains no Azure Web App e copie o IP do web app.
Vá para o Cloudflare e na aba DNS e configure conforme abaixo.
- Primeiro registro
- Type A
- Name @
- Target IP do Web App
- Proxy status: DNS only
- Segundo registro
- Type C
- Name www
- Target @
- Proxy status: DNS only
Por último configure o registro TXT.
O registro TXT mostra ao Azure que você é dono do domínio a ser configurado.
Após tudo configurado iremos apagar esse registro.
Pronto. Devemos ter algo como:
Configurando o domínio do Azure Web App
Estamos prontos para configurar o domínio do Azure App Service.
- Abrir a blade Custom domains
- Clicar em Add custom domain
- Inserir nosso domínio em Custom domain
- Clidar em Validate
- Validar o domínio
Devemos executarmos os passos o domínio principal @
e para o sub-domínio www
.
Obs.: Para o domínio principal (A Name - rmauro.com.br) utilizar o record type A record
.
Para o domínio secondário (subdomínio) (C Name - www.rmauro.com.br) utilizar o record type C record
Após validado clicar em Add custom domain
Devemos ter algo como:
Quando tentarmos acessar o site devemos receber o cadeado vermelho. Isso porque o certificado digital retornado é o do *.azurewebsites.net. e não o nosso - por enquanto.
Configurando certificados
No cloudflare iremos utilizar o modelo de certificado digital Full (strict). Isso faz com o que o Cloudflare valide o certificado na comunicação com o servidor, nesse caso o Azure Web App.
Uma camada a mais de verificação, tornando nosso aplicativo ainda mais seguro.
Configurando encryption mode e gerando as chaves
Abra o Cloudflare na aba SSL/TLS e a sub-aba Overview selecione o tipo Full (strict).
Agora iremos criar o certificado digital confiável pelo Cloudflare e para configurarmos no Azure.
Vá para a aba Origin Server e clique em Create certificate
Deixa as configurações padrões.
- Let Cloudflare generate a private key and a CSR
- Private Key RSA
- List of hostnames os configurados nos passos anteriores.
Copie o conteúdo texto para o notepad e salve como:
- Origin Certificate -> rmauro.com.br.pem
- Private Key -> rmauro.com.br.key
Configurando o Azure Web App com o certificado
Primeiro vamos gerar a chave em formato pfx utilizando o openssl.
Abrir o command prompt e navegue até a pasta das chaves e execute o seguinte comando:
> openssl pkcs12 -inkey rmauro.com.br.key -in rmauro.com.br.pem -export -out rmauro.com.br.pfx
Esse comando irá solicitar um passowrd. Entre com um password forte para nossa chave.
No portal do Azure navegue até a sub blade Custom domains de novo. Agora vamos subir o certificado digital que acabamos de criar e configurá-lo com nosso domínio (Cadeado verde).
- Clique em Add Binding
- Selecione o domínio rmauro.com.br
- Clique em Upload PFX Certificate
- Selecione o PFX gerado a pouco (rmauro.com.br.pfx)
- Insira a senha do certificado quando solicitado
Pronto, agora temos o certificado para utilizarmos em nosso site.
Agora selecione o certificado Cloudflare Origin Certificate e o TLS/SSL Type - SNI SSL e clique em Add Binding.
Faça o mesmo para o sub-domínio www.
Devemos ter algo como:
Habilitado Cloudflare como DNS and Proxy
Volte para o Cloudflare e configure o DNS com Proxy para os domínios.
Pronto... cadeado verde e criptografia ponta a ponta.