internal void ApplyDefaultCert(HttpsConnectionAdapterOptions httpsOptions) { if (httpsOptions.ServerCertificate != null || httpsOptions.ServerCertificateSelector != null) { return; } EnsureDefaultCert(); httpsOptions.ServerCertificate = DefaultCertificate; }
public void Load() { if (_loaded) { return; } _loaded = true; LoadDefaultCert(ConfigurationReader); foreach (var endpoint in ConfigurationReader.Endpoints) { var listenOptions = AddressBinder.ParseAddress(endpoint.Url, out var https); Options.ApplyEndpointDefaults(listenOptions); if (endpoint.Protocols.HasValue) { listenOptions.Protocols = endpoint.Protocols.Value; } var httpsOptions = new HttpsConnectionAdapterOptions(); if (https) { Options.ApplyHttpsDefaults(httpsOptions); httpsOptions.ServerCertificate = LoadCertificate(endpoint.Certificate, endpoint.Name) ?? httpsOptions.ServerCertificate; Options.ApplyDefaultCert(httpsOptions); } if (EndpointConfigurations.TryGetValue(endpoint.Name, out var configureEndpoint)) { var endpointConfig = new EndpointConfiguration(https, listenOptions, httpsOptions); configureEndpoint(endpointConfig); } if (https && !listenOptions.IsTls) { if (httpsOptions.ServerCertificate == null && httpsOptions.ServerCertificateSelector == null) { throw new InvalidOperationException("Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer certificate could not be found or is out of date.\nTo generate a developer certificate run 'dotnet dev-certs https'. To trust the certificate (Windows and macOS only) run 'dotnet dev-certs https --trust'.\nFor more information on configuring HTTPS see https://go.microsoft.com/fwlink/?linkid=848054."); } listenOptions.UseHttps(httpsOptions); } Options.ListenOptions.Add(listenOptions); } foreach (var action in EndpointsToAdd) { action(); } }
internal EndpointConfiguration(bool isHttps, ListenOptions listenOptions, HttpsConnectionAdapterOptions httpsOptions) { IsHttps = isHttps; ListenOptions = listenOptions ?? throw new ArgumentNullException(nameof(listenOptions)); HttpsOptions = httpsOptions ?? throw new ArgumentNullException(nameof(httpsOptions)); }
internal void ApplyHttpsDefaults(HttpsConnectionAdapterOptions httpsOptions) { HttpsDefaults(httpsOptions); }