コード例 #1
0
        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);
            }
        }