✨ Load certificate to use HTTPs
This commit is contained in:
@@ -9,7 +9,7 @@ using tusdotnet.Stores;
|
|||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
// Configure Kestrel and server options
|
// Configure Kestrel and server options
|
||||||
builder.ConfigureAppKestrel();
|
builder.ConfigureAppKestrel(builder.Configuration);
|
||||||
|
|
||||||
// Add application services
|
// Add application services
|
||||||
builder.Services.AddRegistryService(builder.Configuration);
|
builder.Services.AddRegistryService(builder.Configuration);
|
||||||
|
@@ -9,7 +9,7 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
// Configure Kestrel and server options
|
// Configure Kestrel and server options
|
||||||
builder.ConfigureAppKestrel();
|
builder.ConfigureAppKestrel(builder.Configuration);
|
||||||
|
|
||||||
// Add metrics and telemetry
|
// Add metrics and telemetry
|
||||||
builder.Services.AddAppMetrics();
|
builder.Services.AddAppMetrics();
|
||||||
|
@@ -1,13 +1,14 @@
|
|||||||
using DysonNetwork.Pusher;
|
using DysonNetwork.Pusher;
|
||||||
using DysonNetwork.Pusher.Startup;
|
using DysonNetwork.Pusher.Startup;
|
||||||
using DysonNetwork.Shared.Auth;
|
using DysonNetwork.Shared.Auth;
|
||||||
|
using DysonNetwork.Shared.Http;
|
||||||
using DysonNetwork.Shared.Registry;
|
using DysonNetwork.Shared.Registry;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
// Configure Kestrel and server options
|
// Configure Kestrel and server options
|
||||||
builder.ConfigureAppKestrel();
|
builder.ConfigureAppKestrel(builder.Configuration);
|
||||||
|
|
||||||
// Add application services
|
// Add application services
|
||||||
builder.Services.AddRegistryService(builder.Configuration);
|
builder.Services.AddRegistryService(builder.Configuration);
|
||||||
|
@@ -1,17 +0,0 @@
|
|||||||
namespace DysonNetwork.Pusher.Startup;
|
|
||||||
|
|
||||||
public static class KestrelConfiguration
|
|
||||||
{
|
|
||||||
public static WebApplicationBuilder ConfigureAppKestrel(this WebApplicationBuilder builder)
|
|
||||||
{
|
|
||||||
builder.Host.UseContentRoot(Directory.GetCurrentDirectory());
|
|
||||||
builder.WebHost.ConfigureKestrel(options =>
|
|
||||||
{
|
|
||||||
options.Limits.MaxRequestBodySize = 50 * 1024 * 1024;
|
|
||||||
options.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(2);
|
|
||||||
options.Limits.RequestHeadersTimeout = TimeSpan.FromSeconds(30);
|
|
||||||
});
|
|
||||||
|
|
||||||
return builder;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,13 +1,16 @@
|
|||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Security.Cryptography.X509Certificates;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Server.Kestrel.Core;
|
using Microsoft.AspNetCore.Server.Kestrel.Core;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
namespace DysonNetwork.Shared.Http;
|
namespace DysonNetwork.Shared.Http;
|
||||||
|
|
||||||
public static class KestrelConfiguration
|
public static class KestrelConfiguration
|
||||||
{
|
{
|
||||||
public static WebApplicationBuilder ConfigureAppKestrel(this WebApplicationBuilder builder)
|
public static WebApplicationBuilder ConfigureAppKestrel(this WebApplicationBuilder builder, IConfiguration configuration)
|
||||||
{
|
{
|
||||||
builder.Host.UseContentRoot(Directory.GetCurrentDirectory());
|
builder.Host.UseContentRoot(Directory.GetCurrentDirectory());
|
||||||
builder.WebHost.ConfigureKestrel(options =>
|
builder.WebHost.ConfigureKestrel(options =>
|
||||||
@@ -15,10 +18,26 @@ public static class KestrelConfiguration
|
|||||||
options.Limits.MaxRequestBodySize = 50 * 1024 * 1024;
|
options.Limits.MaxRequestBodySize = 50 * 1024 * 1024;
|
||||||
options.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(2);
|
options.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(2);
|
||||||
options.Limits.RequestHeadersTimeout = TimeSpan.FromSeconds(30);
|
options.Limits.RequestHeadersTimeout = TimeSpan.FromSeconds(30);
|
||||||
options.ConfigureEndpointDefaults(endpoints =>
|
|
||||||
|
var certPath = configuration["Service:ClientCert"]!;
|
||||||
|
var keyPath = configuration["Service:ClientKey"]!;
|
||||||
|
|
||||||
|
// Load PEM cert and key manually
|
||||||
|
var certificate = X509Certificate2.CreateFromPemFile(certPath, keyPath);
|
||||||
|
|
||||||
|
// You MUST call this to make sure the key is usable
|
||||||
|
certificate = certificate.CopyWithPrivateKey(
|
||||||
|
RSA.Create()
|
||||||
|
);
|
||||||
|
|
||||||
|
// Now pass the full cert
|
||||||
|
options.ListenAnyIP(5001, listenOptions =>
|
||||||
{
|
{
|
||||||
endpoints.Protocols = HttpProtocols.Http1AndHttp2;
|
listenOptions.UseHttps(certificate);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Optional: HTTP fallback
|
||||||
|
options.ListenAnyIP(8080);
|
||||||
});
|
});
|
||||||
|
|
||||||
return builder;
|
return builder;
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
using DysonNetwork.Shared.Auth;
|
using DysonNetwork.Shared.Auth;
|
||||||
|
using DysonNetwork.Shared.Http;
|
||||||
using DysonNetwork.Shared.Registry;
|
using DysonNetwork.Shared.Registry;
|
||||||
using DysonNetwork.Sphere;
|
using DysonNetwork.Sphere;
|
||||||
using DysonNetwork.Sphere.Startup;
|
using DysonNetwork.Sphere.Startup;
|
||||||
@@ -7,7 +8,7 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
// Configure Kestrel and server options
|
// Configure Kestrel and server options
|
||||||
builder.ConfigureAppKestrel();
|
builder.ConfigureAppKestrel(builder.Configuration);
|
||||||
|
|
||||||
// Add metrics and telemetry
|
// Add metrics and telemetry
|
||||||
builder.Services.AddAppMetrics();
|
builder.Services.AddAppMetrics();
|
||||||
|
@@ -1,17 +0,0 @@
|
|||||||
namespace DysonNetwork.Sphere.Startup;
|
|
||||||
|
|
||||||
public static class KestrelConfiguration
|
|
||||||
{
|
|
||||||
public static WebApplicationBuilder ConfigureAppKestrel(this WebApplicationBuilder builder)
|
|
||||||
{
|
|
||||||
builder.Host.UseContentRoot(Directory.GetCurrentDirectory());
|
|
||||||
builder.WebHost.ConfigureKestrel(options =>
|
|
||||||
{
|
|
||||||
options.Limits.MaxRequestBodySize = 50 * 1024 * 1024;
|
|
||||||
options.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(2);
|
|
||||||
options.Limits.RequestHeadersTimeout = TimeSpan.FromSeconds(30);
|
|
||||||
});
|
|
||||||
|
|
||||||
return builder;
|
|
||||||
}
|
|
||||||
}
|
|
Reference in New Issue
Block a user