public static async Task StartAsync(string hostname) { _random = new Random(); var webapp = new Webapp(hostname); await webapp.CheckPrincipalPrivileges(); while (true) { if (webapp.IsCertificateDueForRenewal()) { var cert = await AcmeCertificate.CreateAsync(hostname, "password"); await webapp.InstallCertificateAsync(cert.Bytes, "password"); } await RetryDelay(); } }
public static async Task <AcmeCertificate> CreateAsync(string hostname, string password) { // TODO: pick the right environment var client = new AcmeClient(WellKnownServers.LetsEncryptStaging); var account = await client.NewRegistraton(); account.Data.Agreement = account.GetTermsOfServiceUri(); await client.UpdateRegistration(account); lock (Lock) { Current?.Dispose(); Current = new AcmeCertificate(client, hostname); } await Current.StartChallenge(); await Current.CompleteChallenge(); await Current.CreateCertificate(password); return(Current); }