public async Task <X509Certificate2> GetCertificate(IInstanceLogger instanceLogger, string domainName) { if (instanceLogger == null) { throw new ArgumentNullException(nameof(instanceLogger)); } AcmeCertificateManager._instanceLogger = instanceLogger; this._storage.Init(this._settings, instanceLogger); AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Certificate Requested for {domainName}"); var pfx = await _storage.GetCertAsync(domainName); if (pfx != null) { AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Certificate found in storage for {domainName}"); var cert = new X509Certificate2(pfx, _settings.PfxPassword); AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Certificate has expire date of {cert.NotAfter}"); if (cert.NotAfter - DateTime.UtcNow > _settings.RenewalPeriod) { AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Certificate is valid, returning cert"); return(cert); } else { AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Certificate is will expire, will request new cert"); } } else { AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Did not find certificate in storage for: {domainName}"); } AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Requesting new certificate for {domainName}"); pfx = await RequestNewCertificateV2(domainName); if (pfx != null) { AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Obtained certificate for {domainName}"); AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Storing certificate for {domainName}"); await _storage.StoreCertAsync(domainName, pfx); AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Stored certificate will create X509 and return {domainName}"); return(new X509Certificate2(pfx, _settings.PfxPassword)); } else { AcmeCertificateManager._instanceLogger.AddError($"{Tag}_GetCertificate", $"Response from certificate is null for {domainName}, did not get certificate."); return(null); } }
public async Task <X509Certificate2> GetCertificate(string domainName) { if (_settings.Diagnostics) { Console.WriteLine($"[ACMECERTMGR] Certificate Requested for {domainName}"); } var pfx = await _storage.GetCertAsync(domainName); if (pfx != null) { if (_settings.Diagnostics) { Console.WriteLine($"[ACMECERTMGR] Certificate found in storage for {domainName}"); } var cert = new X509Certificate2(pfx, _settings.PfxPassword); if (_settings.Diagnostics) { Console.WriteLine($"[ACMECERTMGR] Certificate has expire date of {cert.NotAfter}"); } if (cert.NotAfter - DateTime.UtcNow > _settings.RenewalPeriod) { if (_settings.Diagnostics) { Console.WriteLine($"[ACMECERTMGR] Certificate is valid, returning cert"); } return(cert); } else { if (_settings.Diagnostics) { Console.WriteLine($"[ACMECERTMGR] Certificate is will expire, will request new cert"); } } } else { if (_settings.Diagnostics) { Console.WriteLine($"[ACMECERTMGR] did not find certificate in storage for: {domainName}"); } } if (_settings.Diagnostics) { Console.WriteLine($"[ACMECERTMGR] Requesting new certificate for {domainName}"); } pfx = await RequestNewCertificate(domainName); if (pfx != null) { if (_settings.Diagnostics) { Console.WriteLine($"[ACMECERTMGR] Obtained certificate for {domainName}"); } if (_settings.Diagnostics) { Console.WriteLine($"[ACMECERTMGR] Storing certificate for {domainName}"); } await _storage.StoreCertAsync(domainName, pfx); if (_settings.Diagnostics) { Console.WriteLine($"[ACMECERTMGR] Stored certificate will create X509 and return {domainName}"); } return(new X509Certificate2(pfx, _settings.PfxPassword)); } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine($"[ACMECERTMGR] Response from certificate is null for {domainName}, did not get certificate."); Console.ResetColor(); return(null); } }