Https com Kestrel e IIS no Windows

  • Rafael Miceli
  • 7 Abr 2016

Em muitas situações vamos precisar que nossa aplicação web esteja rodando em cima de https.

Neste artigo vamos ver como configurar isso no ambiente Windows para o kestrel e o iis. Em um próximo veremos no Ubuntu.

Gerando um certificado

Para usar https com kestrel precisamos gerar um .pfx (PKCS #12), ou seja, precisamos criar um certificado para a criptografia da comunicação das nosss páginas web (em um outro artigo explico melhor sobre, PKCS #12, X.509…).

Para criarmos o certificado faremos os seguintes passos (estou fazendo isso em um Windows 10, então podem haver pequenas variações para outras versões):

Abra o seu gerenciador de certificados e criptografia

passo1

Avance

passo2

Selecione Criar um novo certificado

passo3

Selecione a primeira opção e Avance

passo4

Escolha Fazer backup do certificado e chave agora e no Local do backup coloque o endereço aonde vai ser criado seu .pfx e o nome do seu arquivo.

Também escolha uma senha E NÃO SE ESQUEÇA para seu certificado.

passo5

Por fim escolha Atualizar os arquivos criptografados mais tarde

E pronto, temos nossa chave no local que você definiu.

Configurando a aplicação

Após gerarmos nosso certificado precisamos agora ler o mesmo em nossa aplicação.

Para isso, copie o certificado para a raiz do seu projeto (aonde fica o project.json)

Em nosso startup.cs, no método configure, adicione o seguinte código:

var certFile = appEnv.ApplicationBasePath + "\\teste.pfx";
var certificate = new X509Certificate2(certFile, "teste");

app.Use(ChangeContextToHttps);   
app.UseKestrelHttps(certificate);

Vamos também fazer que todos os requests em nossa aplicação caiam para o https adicionando um método chamado ChangeContextToHttps que nossa IApplicationBuilder esta usando

private static RequestDelegate ChangeContextToHttps(RequestDelegate next)
{
    return async context =>
    {
        context.Request.Scheme = "https";
        await next(context);
    };
}

Vamos precisar também adicionar uma nova dependência ao kestrel.https e o comando web em nosso project.json:

passo6

Reparem que não estamos usando o dnxcore50, até podemos, mas a dependência ao kestrel.https tem de ser no dnx451 uma vez que este pacote não é suportado pelo RC1, mas para o RC2 estará!

Excelente!

Vamos testar executando nosso:

dnx web 

passo7

Configurando IIS

Para configurar nossa aplicação para https no IIS é ainda mais simples.

Apenas precisamos ir no arquivo launchSettings.json dentro da pasta Properties (Se você estiver no visual studio vai ter o simbolo de uma ferramenta)

Dentro do objeto listSettings em iisExpress mudamos a applicationUrl inicial para uma url com uma porta 443 e a sslPort para a mesma porta usada no applicationUrl

passo8

Dessa vez para testar, vamos clicar no botão IIS express em nosso Visual Studio Community.

passo9

Em um próximo artigo veremos o mesmo para Ubuntu.

comentarios com Disqus Disqus