Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Configurando o HTTPS no seu backend.

Bom dia Galera,

Aqui no curso, o professor nos ensina a proteger o backend de nossa aplicação e habilitar o https, gerando certificado digital com o openssl na pasta da aplicação e alterando o arquivo server.js com o código abaixo, protegendo então os dados em Json quando foi mostrado lá no programa WireShark quando solicitados via POST ou GET, achei isso maneiro demais.

https.createServer(
  {
    key: fs.readFileSync('server.key'),
    cert: fs.readFileSync('server.crt')
  },
  server
).listen(8000, () => {
  console.log("API disponível em https://localhost:8000")
})

Eu também sou desenvolvedor .net e gostaria de perguntar se é possível fazer o mesmo para uma API NET Core com esse mesmo esquema, né de proteger as informações, gerando o certificado com openssl e alterando outros detalhes num projeto? Se caso sim, fico no aguardo de algum detalhes, abraços

Atenciosamente, Leandro de Azevedo

2 respostas
solução!

Olá, Leandro.

Tudo bem?

Muito bom ver que você está se aprofundando na segurança do backend com HTTPS! Sim, é totalmente possível configurar HTTPS em uma API .NET Core utilizando certificados gerados com OpenSSL. Vou te dar um passo a passo básico de como fazer isso.

1. Gerar Certificado com OpenSSL

Primeiro, você precisa gerar o certificado e a chave privada com o OpenSSL. Você pode fazer isso com os seguintes comandos:

openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

2. Configurar o Certificado no .NET Core

Depois de gerar o certificado, você precisa configurar sua aplicação .NET Core para usar esses arquivos. Aqui está um exemplo de como fazer isso no Program.cs:

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using System.IO;
using System.Security.Cryptography.X509Certificates;

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
                webBuilder.UseKestrel(options =>
                {
                    options.ListenLocalhost(8000, listenOptions =>
                    {
                        listenOptions.UseHttps(new X509Certificate2("server.crt", "server.key"));
                    });
                });
            });
}

3. Configurar o appsettings.json

Você também pode configurar o HTTPS diretamente no arquivo appsettings.json da sua aplicação:

{
  "Kestrel": {
    "Endpoints": {
      "HttpsInlineCertFile": {
        "Url": "https://localhost:8000",
        "Certificate": {
          "Path": "server.crt",
          "KeyPath": "server.key"
        }
      }
    }
  }
}

4. Atualizar o Startup.cs

Certifique-se de que o seu Startup.cs está configurado para usar HTTPS redirection:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddHttpsRedirection(options =>
        {
            options.HttpsPort = 8000;
        });
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRouting();
        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }
}

Com essas configurações, sua API .NET Core estará protegida com HTTPS usando os certificados gerados com OpenSSL.

Veja se faz sentido, qualquer dúvida manda aqui de novo.

Espero ter ajudado. Bons estudos.

Incrível Renan, obrigado pelo exemplo, então podemos fazer numa API .net, vou aplicar esta técnica em breve aqui nos meus exemplos.

Atenciosamente, Leandro de Azevedo.