Exemplo n.º 1
0
        internal void ApplyDefaultCert(HttpsConnectionAdapterOptions httpsOptions)
        {
            if (httpsOptions.ServerCertificate != null || httpsOptions.ServerCertificateSelector != null)
            {
                return;
            }

            EnsureDefaultCert();

            httpsOptions.ServerCertificate = DefaultCertificate;
        }
Exemplo n.º 2
0
        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();
            }
        }
Exemplo n.º 3
0
 internal EndpointConfiguration(bool isHttps, ListenOptions listenOptions, HttpsConnectionAdapterOptions httpsOptions)
 {
     IsHttps       = isHttps;
     ListenOptions = listenOptions ?? throw new ArgumentNullException(nameof(listenOptions));
     HttpsOptions  = httpsOptions ?? throw new ArgumentNullException(nameof(httpsOptions));
 }
Exemplo n.º 4
0
 internal void ApplyHttpsDefaults(HttpsConnectionAdapterOptions httpsOptions)
 {
     HttpsDefaults(httpsOptions);
 }