部署到 Windows 服务器后,无法在带有 WebAPI 的 .NET Core 5.0 控制台中使用 SSL
Unable to use SSL in a .NET Core 5.0 Console with WebAPI after deployment to Windows Server
我创建了一个 WebAPI .Net 5 应用程序,它侦听 HTTPS 端口 8286。当我 运行 它在 Visual Studio 时,一切都很好。
一旦我执行“发布”并尝试在我们的 Windows Server 2012 上 运行 它,我得到一个“无法启动 Kestrel。
System.InvalidOperationException: 无法配置 HTTPS 终结点。未指定服务器证书,并且找不到默认的开发人员证书或已过期。
生成开发人员证书 运行 'dotnet dev-certs https'。信任证书(仅限 Windows 和 macOS)运行 'dotnet dev-certs https --trust'..."
我在服务器上安装了 SSL 证书。它适用于 IIS 和 .NET 4.8 WebAPI 自托管 OWIN 应用程序
使用netsh http show sslcert
我可以看到证书已绑定
这是我的 CreateHostBuilder 函数:
public static IHostBuilder CreateHostBuilder(string[] args)
{
Console.WriteLine("USE URLS: https://*:8286/");
return Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.UseUrls("https://*:8286/");
});
}
好的,下面是 运行 来自命令行(使用 Kestrel 服务器)的应用程序时的解决方案
您需要在 appsettings.json
中添加以下部分
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://*:1111"
}
,
"Https": {
"Url": "https://*:2222",
"Certificate": {
"Path": "my_ssl.pfx",
"Password": "my_password"
}
}
}}
显然,要使其正常工作,您需要 pfx 文件。即使您部署到 Linux.
,这也会起作用
顺便说一句,如果您将此添加到 appsettings.json
,当 运行 来自 Visual Studio
时,它将覆盖 launchSettings.json
中的端口
我创建了一个 WebAPI .Net 5 应用程序,它侦听 HTTPS 端口 8286。当我 运行 它在 Visual Studio 时,一切都很好。
一旦我执行“发布”并尝试在我们的 Windows Server 2012 上 运行 它,我得到一个“无法启动 Kestrel。 System.InvalidOperationException: 无法配置 HTTPS 终结点。未指定服务器证书,并且找不到默认的开发人员证书或已过期。 生成开发人员证书 运行 'dotnet dev-certs https'。信任证书(仅限 Windows 和 macOS)运行 'dotnet dev-certs https --trust'..."
我在服务器上安装了 SSL 证书。它适用于 IIS 和 .NET 4.8 WebAPI 自托管 OWIN 应用程序
使用netsh http show sslcert
我可以看到证书已绑定
这是我的 CreateHostBuilder 函数:
public static IHostBuilder CreateHostBuilder(string[] args)
{
Console.WriteLine("USE URLS: https://*:8286/");
return Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.UseUrls("https://*:8286/");
});
}
好的,下面是 运行 来自命令行(使用 Kestrel 服务器)的应用程序时的解决方案
您需要在 appsettings.json
中添加以下部分
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://*:1111"
}
,
"Https": {
"Url": "https://*:2222",
"Certificate": {
"Path": "my_ssl.pfx",
"Password": "my_password"
}
}
}}
显然,要使其正常工作,您需要 pfx 文件。即使您部署到 Linux.
,这也会起作用顺便说一句,如果您将此添加到 appsettings.json
,当 运行 来自 Visual Studio
launchSettings.json
中的端口