コード例 #1
0
        public async Task <X509Certificate2> GetCertificate(IInstanceLogger instanceLogger, string domainName)
        {
            if (instanceLogger == null)
            {
                throw new ArgumentNullException(nameof(instanceLogger));
            }

            AcmeCertificateManager._instanceLogger = instanceLogger;
            this._storage.Init(this._settings, instanceLogger);

            AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Certificate Requested for {domainName}");
            var pfx = await _storage.GetCertAsync(domainName);

            if (pfx != null)
            {
                AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Certificate found in storage for {domainName}");
                var cert = new X509Certificate2(pfx, _settings.PfxPassword);
                AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Certificate has expire date of {cert.NotAfter}");
                if (cert.NotAfter - DateTime.UtcNow > _settings.RenewalPeriod)
                {
                    AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Certificate is valid, returning cert");
                    return(cert);
                }
                else
                {
                    AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Certificate is will expire, will request new cert");
                }
            }
            else
            {
                AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Did not find certificate in storage for: {domainName}");
            }

            AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Requesting new certificate for {domainName}");
            pfx = await RequestNewCertificateV2(domainName);

            if (pfx != null)
            {
                AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Obtained certificate for {domainName}");
                AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Storing certificate for {domainName}");
                await _storage.StoreCertAsync(domainName, pfx);

                AcmeCertificateManager._instanceLogger.AddCustomEvent(Core.PlatformSupport.LogLevel.Verbose, $"{Tag}_GetCertificate", $"Stored certificate will create X509 and return {domainName}");
                return(new X509Certificate2(pfx, _settings.PfxPassword));
            }
            else
            {
                AcmeCertificateManager._instanceLogger.AddError($"{Tag}_GetCertificate", $"Response from certificate is null for {domainName}, did not get certificate.");
                return(null);
            }
        }
コード例 #2
0
        public async Task <X509Certificate2> GetCertificate(string domainName)
        {
            if (_settings.Diagnostics)
            {
                Console.WriteLine($"[ACMECERTMGR] Certificate Requested for {domainName}");
            }
            var pfx = await _storage.GetCertAsync(domainName);

            if (pfx != null)
            {
                if (_settings.Diagnostics)
                {
                    Console.WriteLine($"[ACMECERTMGR] Certificate found in storage for {domainName}");
                }
                var cert = new X509Certificate2(pfx, _settings.PfxPassword);
                if (_settings.Diagnostics)
                {
                    Console.WriteLine($"[ACMECERTMGR] Certificate has expire date of {cert.NotAfter}");
                }
                if (cert.NotAfter - DateTime.UtcNow > _settings.RenewalPeriod)
                {
                    if (_settings.Diagnostics)
                    {
                        Console.WriteLine($"[ACMECERTMGR] Certificate is valid, returning cert");
                    }
                    return(cert);
                }
                else
                {
                    if (_settings.Diagnostics)
                    {
                        Console.WriteLine($"[ACMECERTMGR] Certificate is will expire, will request new cert");
                    }
                }
            }
            else
            {
                if (_settings.Diagnostics)
                {
                    Console.WriteLine($"[ACMECERTMGR] did not find certificate in storage for: {domainName}");
                }
            }

            if (_settings.Diagnostics)
            {
                Console.WriteLine($"[ACMECERTMGR] Requesting new certificate for {domainName}");
            }
            pfx = await RequestNewCertificate(domainName);

            if (pfx != null)
            {
                if (_settings.Diagnostics)
                {
                    Console.WriteLine($"[ACMECERTMGR] Obtained certificate for {domainName}");
                }
                if (_settings.Diagnostics)
                {
                    Console.WriteLine($"[ACMECERTMGR] Storing certificate for {domainName}");
                }
                await _storage.StoreCertAsync(domainName, pfx);

                if (_settings.Diagnostics)
                {
                    Console.WriteLine($"[ACMECERTMGR] Stored certificate will create X509 and return {domainName}");
                }
                return(new X509Certificate2(pfx, _settings.PfxPassword));
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine($"[ACMECERTMGR] Response from certificate is null for {domainName}, did not get certificate.");
                Console.ResetColor();
                return(null);
            }
        }