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();
            }
        }
Exemple #2
0
        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);
        }