public async Task Run(IAcmeDnsRequest acmeDnsRequest, int renewXNumberOfDaysBeforeExpiration) { try { CertificateInstallModel model = null; string hostsPlusSeparated = AcmeClient.GetHostsPlusSeparated(acmeDnsRequest.Hosts); var certname = $"{hostsPlusSeparated}-{acmeDnsRequest.AcmeEnvironment.Name}"; var cert = await certificateStore.GetCertificate(certname, acmeDnsRequest.PFXPassword); if (cert == null || cert.Certificate.NotAfter < DateTime.UtcNow.AddDays(renewXNumberOfDaysBeforeExpiration)) //Cert doesnt exist or expires in less than renewXNumberOfDaysBeforeExpiration days, lets renew. { logger.LogInformation("Certificate store didn't contain certificate or certificate was expired starting renewing"); model = await acmeClient.RequestDnsChallengeCertificate(acmeDnsRequest); model.CertificateInfo.Name = certname; await certificateStore.SaveCertificate(model.CertificateInfo); } else { logger.LogInformation("Certificate expires in more than {renewXNumberOfDaysBeforeExpiration} days, reusing certificate from certificate store", renewXNumberOfDaysBeforeExpiration); model = new CertificateInstallModel() { CertificateInfo = cert, Hosts = acmeDnsRequest.Hosts }; } await certificateConsumer.Install(model); logger.LogInformation("Removing expired certificates"); var expired = await certificateConsumer.CleanUp(); logger.LogInformation("The following certificates was removed {Thumbprints}", string.Join(", ", expired.ToArray())); } catch (Exception e) { logger.LogError(e, "Failed"); throw; } }
public async Task Run(AcmeDnsRequest acmeDnsRequest, int renewXNumberOfDaysBeforeExpiration) { try { CertificateInstallModel model = null; var certname = acmeDnsRequest.Host + "-" + acmeDnsRequest.AcmeEnvironment.Name + ".pfx"; CertificateInfo cert = await certificateStore.GetCertificate(certname, acmeDnsRequest.PFXPassword); if (cert == null || cert.Certificate.NotAfter < DateTime.UtcNow.AddDays(renewXNumberOfDaysBeforeExpiration)) //Cert doesnt exist or expires in less than 21 days, lets renew. { logger.LogInformation("Certificate store didn't contain certificate or certificate was expired starting renewing"); model = await acmeClient.RequestDnsChallengeCertificate(acmeDnsRequest); model.CertificateInfo.Name = certname; await certificateStore.SaveCertificate(model.CertificateInfo); } else { logger.LogInformation("Certificate expires in more than {renewXNumberOfDaysBeforeExpiration} days, reusing certificate from certificate store", renewXNumberOfDaysBeforeExpiration); model = new CertificateInstallModel() { CertificateInfo = cert, Host = acmeDnsRequest.Host }; } await azureWebAppService.Install(model); logger.LogInformation("Removing expired certificates"); System.Collections.Generic.List <string> expired = azureWebAppService.RemoveExpired(); logger.LogInformation("The following certificates was removed {Thumbprints}", string.Join(", ", expired.ToArray())); } catch (Exception e) { logger.LogError(e, "Failed"); throw; } }