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.