C# 在.NET控制台应用程序中为Kestral WebHost builder配置SSL证书

C# 在.NET控制台应用程序中为Kestral WebHost builder配置SSL证书,c#,.net,ssl,kestral,C#,.net,Ssl,Kestral,我正在控制台应用程序中创建一个ASP.NET WebAPI端点,我需要将其作为Windows服务宿主。 现在,除了端点在http中之外,其他一切都正常工作。我想使用https 当我通过VisualStudio运行它时。 我相信Kestral是IIS背后的反向代理,SSL证书是经过验证的。但当我把它作为Windows服务托管时。尝试到达终结点时,我收到证书错误 这是我的Kestral WebHost builder var configigurations = new Co

我正在控制台应用程序中创建一个ASP.NET WebAPI端点,我需要将其作为Windows服务宿主。 现在,除了端点在http中之外,其他一切都正常工作。我想使用https

当我通过VisualStudio运行它时。 我相信Kestral是IIS背后的反向代理,SSL证书是经过验证的。但当我把它作为Windows服务托管时。尝试到达终结点时,我收到证书错误

这是我的Kestral WebHost builder

            var configigurations = new ConfigurationBuilder()
                       .AddJsonFile("appsettings.json", optional: false)
                       .Build();
            var host = new WebHostBuilder()
                .UseKestrel(options =>
                {
                    options.ListenAnyIP(443, listenOptions =>
                    {
                        listenOptions.UseHttps("sslcertificate.pfx", "ssl@123");
                    });
                })
                .UseUrls(config.ApiBaseUrl)
                .UseConfiguration(configigurations)
                .UseStartup<Startup>()
                .Build();
            host.Run();
var configigurations=new ConfigurationBuilder()
.AddJsonFile(“appsettings.json”,可选:false)
.Build();
var host=new WebHostBuilder()
.UseKestrel(选项=>
{
options.listenyIP(443,listenOptions=>
{
UseHttps(“sslcertificate.pfx”ssl@123");
});
})
.useURL(config.ApiBaseUrl)
.UseConfiguration(配置配置)
.UseStartup()
.Build();
host.Run();
因为它作为Windows服务运行并公开API,所以我不能依赖IIS。我需要为Kestral进行配置

但是我怎么能呢

  • 为本地主机生成SSL(我正在使用Windows)
  • 如果我已经在生产中拥有SSL证书(*.cert)。如何在生产服务器(也包括Windows)上使用它生成*.pfx(cert+RSA私钥)
  • .NETCore(和.NET5)与一个方便的工具捆绑在一起,用于处理开发自签名证书。调查这些命令是:
  • 本文档还介绍了如何使用PowerShell或openssl(如果您喜欢的话)执行相同的操作

  • 调查。简而言之,您可以通过从Windows证书存储导出证书并选择“Yes,export Private key”(是,导出私钥),这将自动启用PFX格式

  • 这将创建一个证书

    dotnet dev-certs https -ep $env:USERPROFILE\.aspnet\https\aspnetapp.pfx -p crypticpassword
    
    这将创建信任

    dotnet dev-certs https --trust
    

    好的,这是一个控制台应用程序。但是在它里面有一个API端点。对吗?当您在VisualStudio中运行它时,它会命中端点,当部署为Windows服务时,它会抛出证书验证错误。这是你的问题,对吗?没错。我正在尝试在本地系统上安装它
    dotnet dev-certs https --trust