配置自签名证书
Configuring a self-signed certificate
我正在尝试通过 appsettings.json 文件配置自签名证书。
我将现有的 IIS 证书导出到 pfx 文件。
然后我在 appsettings.json:
中有这个
"Kestrel": {
"Endpoints": {
"Https": {
"Url": "https://MYDOMAIN:5001",
"Certificate": {
"Path": "c:\1\IIScert.pfx",
"Password": "12345"
}
}
}
}
它完全忽略它并改为通过 http 监听 5000。
然后我尝试通过 program.cs 文件配置它,幸运的是:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.ConfigureKestrel(serverOptions =>
{
serverOptions.Listen(IPAddress.Any, 5001, listenOptions =>
{
listenOptions.UseHttps(@"C:\IIScert.pfx", "12345");
});
});
});
它在 Firefox 上运行,但 returns“ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY”在 Chrome 上运行。
为什么它忽略了我的 appsettings.json,为什么它在 Chrome 上不起作用?
我可以在 Chrome 上使用此证书访问我的 IIS 网站,没有任何问题。
没有使用 appsettings.json 设置,因为显然它也需要在 program.cs 中加载文件,而不仅仅是 startup.cs,因为我有
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
var config = new ConfigurationBuilder().AddJsonFile($"appsettings.json", optional: true).Build();
webBuilder.UseConfiguration(config);
webBuilder.UseStartup<Startup>();
});
}
关于通过代码设置证书,需要设置。
listenOptions.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1;
这也可以在 appsettings.json
中完成
至于为什么 Http2 returns 出现 Chrome 错误,请参阅此错误报告。
https://github.com/dotnet/aspnetcore/issues/41175
我正在尝试通过 appsettings.json 文件配置自签名证书。 我将现有的 IIS 证书导出到 pfx 文件。 然后我在 appsettings.json:
中有这个"Kestrel": {
"Endpoints": {
"Https": {
"Url": "https://MYDOMAIN:5001",
"Certificate": {
"Path": "c:\1\IIScert.pfx",
"Password": "12345"
}
}
}
}
它完全忽略它并改为通过 http 监听 5000。
然后我尝试通过 program.cs 文件配置它,幸运的是:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.ConfigureKestrel(serverOptions =>
{
serverOptions.Listen(IPAddress.Any, 5001, listenOptions =>
{
listenOptions.UseHttps(@"C:\IIScert.pfx", "12345");
});
});
});
它在 Firefox 上运行,但 returns“ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY”在 Chrome 上运行。
为什么它忽略了我的 appsettings.json,为什么它在 Chrome 上不起作用? 我可以在 Chrome 上使用此证书访问我的 IIS 网站,没有任何问题。
没有使用 appsettings.json 设置,因为显然它也需要在 program.cs 中加载文件,而不仅仅是 startup.cs,因为我有
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
var config = new ConfigurationBuilder().AddJsonFile($"appsettings.json", optional: true).Build();
webBuilder.UseConfiguration(config);
webBuilder.UseStartup<Startup>();
});
}
关于通过代码设置证书,需要设置。
listenOptions.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1;
这也可以在 appsettings.json
中完成至于为什么 Http2 returns 出现 Chrome 错误,请参阅此错误报告。 https://github.com/dotnet/aspnetcore/issues/41175