Crie WebSites no Azure com SSL

Recentemente publicamos um post onde falamos como criar WebSites no Azure com Visual Studio Code e FTP. Agora iremos falar como podemos habilitar o HTTPS no site e incluir autenticação básica.

O Azure possui um artigo bem completo que descreve como habilitar o HTTPS e também obter um certificado digital. No nosso caso aqui, vamos criar um certificado para testes usando makecert.

Além de criar o certificado, precisaremos mudar o plano do serviço do nosso WebSite. Porém não conseguimos usar o mesmo plano gratuito que tinhamos no post anterior. Agora teremos que migrar o plano de serviço para o básico ou padrão, o que implicará em custos. No meu caso irei selecionar o plano B1. Para isso, abra as configurações do seu WebSite, selecione a opção “Escalar Verticalmente Plano do Serviço de Aplicativo” e então selecione o plano “B1 Básico” (ver detalhes do plano aqui): criar_websites_no_azure_com_ssl_plano_servico

Agora precisamos fazer algumas configurações no WebSite para incluir redirecionamento. Desse modo, qualquer requisição para o site via HTTP, será redirecionado para o endereço correspondente com HTTPS.

O WebSite no Azure é um serviço PaaS (Platform as a Service), que disponibiliza toda infraestrutura de servidor, deixando o desenvolvedor somente com a incumbência de criar o site em si. Mas podemos ainda assim alterar configurações que são carregadas pelo servidor Web do nosso site criando e editando o arquivo web.config que deve estar criado no wwwroot do nosso WebSite.

Usando o Visual Studio Code, abra a pasta wwwroot do WebSite, crie um arquivo chamado web.config e nele adicione o seguinte conteúdo (Se você não seguiu os procedimentos do Post anterior, sugiro fazê-lo para que possamos prosseguir):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Force HTTPS" enabled="true">
          <match url="(.*)" ignoreCase="false" />
          <conditions>
            <add input="{HTTPS}" pattern="off" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

criar_websites_no_azure_com_ssl_webconfig

Agora vamos subir as mudanças no WebSite usando FTP. Pressione as teclas CTRL + SHIFT + p, digite “sync” e selecione o item “Ftp-sync: Local to Remote” > “wwwroot” > “Full sync” > “Run”. As mudanças são aplicadas assim que a alteração é feita no servidor. Mas, se for o caso, reinicie seu WebSite no Azure.

Se você tentar acessar o site no Azure, sua requisição deverá agora ser reescrita para requisição HTTPS:

criar_websites_no_azure_com_ssl_requisicao_https

Autenticação Básica

Indo um pouco além, podemos ainda incluir uma autenticação básica no nosso WebSite. Vamos precisar adicionar um módulo de autenticação no web.config além do código correspondente no nosso WebSite. Acesse o repositório Git AzurePowerTools do devbridge e baixe o código. Feito isso, crie a pasta “App_Code” no wwwroot do nosso WebSite através do Visual Studio Code e então copie os seguintes arquivos para dentro desta pasta:

  • Devbridge.BasicAuthentication/BasicAuthenticationModule.cs

  • Devbridge.BasicAuthentication/Configuration

criar_websites_no_azure_com_ssl_authbasic

Do mesmo modo que ocorreu com web.config, quando subimos o código de BasicAuthentication, o servidor Web onde está contido nosso WebSite carrega os arquivos.

Agora falta apenas alterarmos nosso web.config para incluir as configurações de basic authentication:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <configSections>
    <section name="basicAuth" type="Devbridge.BasicAuthentication.Configuration.BasicAuthenticationConfigurationSection" />
  </configSections>
  <basicAuth>
    <credentials>
      <add username="usuario" password="senha"/>
    </credentials>
  </basicAuth>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Force HTTPS" enabled="true">
          <match url="(.*)" ignoreCase="false" />
          <conditions>
            <add input="{HTTPS}" pattern="off" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
    <modules>
      <add name="MyBasicAuthenticationModule" type="Devbridge.BasicAuthentication.BasicAuthenticationModule"/>
    </modules>  
  </system.webServer>
</configuration>

Para subir as mudanças no WebSite, pressione as teclas CTRL + SHIFT + p, digite “sync” e selecione o item “Ftp-sync: Local to Remote” > “wwwroot” > “Full sync” > “Run”. As mudanças são aplicadas assim que a mudança é feita. Mas, se for o caso, reinicie seu WebSite no Azure.

E quando tentarmos acessar de novo o site, será solicitado usuário e senha:

criar_websites_no_azure_com_ssl_site_credentials

Qualquer dúvida ou sugestão, usem os comentários. E continuem nos acompanhando no talkitbr. Até a próxima!

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s