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

[Bug] Erro de certificado

Não conseguia rodar a API pq sempre dava um erro de certificado. Foi necessário exportar o certificado "localhost" para a pasta do projeto e usar o código abaixo para fazer a API funcionar.

using System.Security.Cryptography.X509Certificates;

var certPath = "caminho/para/seu/certificado";
var cert = new X509Certificate2(certPath);

Existe alguma forma mais correta ou melhor de fazer isso?

2 respostas
solução!

Olá, Pedro.

Tudo bem?

Essa solução que você encontrou é válida, mas existe uma forma mais integrada e talvez mais "correta" de lidar com certificados no ASP.NET Core, especialmente em ambientes de desenvolvimento.

Uma abordagem alternativa é usar o dotnet dev-certs para gerenciar certificados de desenvolvimento. Aqui estão os passos para configurar isso:

  1. Instalar o certificado de desenvolvimento:

    dotnet dev-certs https --trust
    

    Esse comando instala e confia em um certificado de desenvolvimento no seu sistema. Isso deve resolver a maioria dos problemas de certificado em um ambiente de desenvolvimento.

  2. Configurar o Kestrel para usar o certificado: No arquivo appsettings.json, você pode configurar o Kestrel para usar o certificado de desenvolvimento:

    {
      "Kestrel": {
        "EndPoints": {
          "HttpsInlineCertFile": {
            "Url": "https://localhost:5001",
            "Certificate": {
              "Path": "caminho/para/seu/certificado.pfx",
              "Password": "sua-senha"
            }
          }
        }
      }
    }
    
  3. Configurar o Kestrel no Program.cs: No arquivo Program.cs, você pode configurar o Kestrel para usar as configurações do appsettings.json:

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>()
                          .ConfigureKestrel(serverOptions =>
                          {
                              // Configurações do Kestrel podem ser adicionadas aqui
                          });
            });
    

Essas configurações fazem com que o Kestrel utilize o certificado configurado no appsettings.json, o que pode ser mais seguro e gerenciável do que carregar o certificado diretamente no código.

Veja se faz sentido, pesquisa mais sobre também. Deixei esse exemplo mais para você saber como faz, mas pode seguir como fez para continuar seus estudos.

Espero ter ajudado e bons estudos!

Depois de utilizar o comando dotnet dev-certs https --trust já ficou funcionando.