public async Task RequestCertificate(CancellationToken cancellationToken) { await Authentication(cancellationToken); var hostNames = _certificateSelector.GetCertificatesAboutToExpire(); if (_options.IsDevelopment) { FindDeveloperCert(); } foreach (var hostName in _options.HostNames) { var existingCert = await _certificateStore.GetCertificateAsync(hostName, cancellationToken); if (existingCert == null) { var(cert, rawCert) = await _letsEncryptService.AcquireNewCertificateForHosts( hostName, _options.CertificateSigningRequest, _options.CertificateFriendlyName, _options.CertificatePassword, cancellationToken); existingCert = cert; await _certificateStore.SaveCertificateAsync(hostName, rawCert, cancellationToken); } _certificateSelector.Use(hostName, existingCert); } }