/// <summary> /// Cargar certificado SSL desde la ruta establecida en configuración /// </summary> /// <param name="configuration">Configuración</param> public static void LoadCertificateFromConfiguration(ISSLConfiguration configuration) { if (string.IsNullOrEmpty(configuration.CertificatePath)) { Debug.WriteLine("No se ha establecido algun certificado en la configuración de SSL", VerbosityLevel.Warning); m_status = SSLCertificateStatus.InvalidPath; } else { if (File.Exists(configuration.CertificatePath)) { bool usePassword = !string.IsNullOrEmpty(configuration.CertificatePassword); if (usePassword) { m_globalCert = new X509Certificate2(configuration.CertificatePath, configuration.CertificatePassword); } else { m_globalCert = new X509Certificate2(configuration.CertificatePath); } Debug.WriteLine("Establecido certificado global del sistema", VerbosityLevel.Info); m_status = SSLCertificateStatus.Loaded; } else { Debug.WriteLine($"No se puede cargar el certificado '{configuration.CertificatePath}' porque no existe", VerbosityLevel.Error); m_status = SSLCertificateStatus.NotExists; } } }
/// <summary> /// Crear configuración para el servidor WebServer en base a la configuración provista /// </summary> /// <param name="configuration">Estructura de configuración</param> private WebServerOptions ConfigureWebServer(IWebServerConfiguration serverConfiguration, ISSLConfiguration configuration) { WebServerOptions opts; List <string> urlPrefixes = new List <string> { $"http://*:{serverConfiguration.HttpPort}/" }; if (configuration.Secure && Helper.SSL.Status == SSLCertificateStatus.Loaded) { urlPrefixes.Add($"https://*:{serverConfiguration.HttpsPort}/"); opts = new WebServerOptions(urlPrefixes.ToArray()) { Certificate = Helper.SSL.GlobalCertificate }; } else { opts = new WebServerOptions(urlPrefixes.ToArray()); } return(opts); }