diff options
author | Wouter Tinus <win.acme.simple@gmail.com> | 2020-03-04 21:39:09 +0100 |
---|---|---|
committer | Wouter Tinus <win.acme.simple@gmail.com> | 2020-03-04 21:39:09 +0100 |
commit | 70362142c245e3b2a8bec0e920f98292ddbc0b9f (patch) | |
tree | dca192076e11be2c9dcc70af0528279f9842668b /src | |
parent | 7aa5ceebbd8c872efdc38c52fe7cbfce83db5270 (diff) | |
download | letsencrypt-win-simple-70362142c245e3b2a8bec0e920f98292ddbc0b9f.zip letsencrypt-win-simple-70362142c245e3b2a8bec0e920f98292ddbc0b9f.tar.gz letsencrypt-win-simple-70362142c245e3b2a8bec0e920f98292ddbc0b9f.tar.bz2 |
fix #1431
Diffstat (limited to 'src')
m--------- | src/fluent-command-line-parser | 0 | ||||
-rw-r--r-- | src/main.lib/DomainObjects/CertificateInfo.cs | 28 | ||||
-rw-r--r-- | src/main.lib/Plugins/InstallationPlugins/Script/Script.cs | 4 | ||||
-rw-r--r-- | src/main.lib/Plugins/StorePlugins/CentralSsl/CentralSsl.cs | 2 | ||||
-rw-r--r-- | src/main.lib/Plugins/StorePlugins/PemFiles/PemFiles.cs | 2 | ||||
-rw-r--r-- | src/main.lib/Services/CertificateService.cs | 6 | ||||
-rw-r--r-- | src/main.lib/Services/NotificationService.cs | 2 |
7 files changed, 24 insertions, 20 deletions
diff --git a/src/fluent-command-line-parser b/src/fluent-command-line-parser -Subproject 6864598368f667c8b4e44a1c056e7ce7314120d +Subproject 47edfba7969d1c3a948b580e568b24021d86958 diff --git a/src/main.lib/DomainObjects/CertificateInfo.cs b/src/main.lib/DomainObjects/CertificateInfo.cs index dcc67b5..3c25a57 100644 --- a/src/main.lib/DomainObjects/CertificateInfo.cs +++ b/src/main.lib/DomainObjects/CertificateInfo.cs @@ -1,13 +1,10 @@ -using PKISharp.WACS.Extensions; -using PKISharp.WACS.Plugins.Base.Options; -using PKISharp.WACS.Plugins.CsrPlugins; -using System; +using System; using System.Collections.Generic; -using System.Globalization; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; +using System.Text.RegularExpressions; namespace PKISharp.WACS.DomainObjects { @@ -23,19 +20,26 @@ namespace PKISharp.WACS.DomainObjects public List<X509Certificate2> Chain { get; set; } = new List<X509Certificate2>(); public FileInfo? CacheFile { get; set; } public string? CacheFilePassword { get; set; } - public string SubjectName => Certificate.Subject.Replace("CN=", "").Trim(); - + public string CommonName + { + get + { + var match = Regex.Match(Certificate.Subject, "CN=([^,]+)"); + if (match.Success) + { + return match.Groups[1].Value.Trim(); + } + return SanNames.First(); + } + } + public Dictionary<Type, StoreInfo> StoreInfo { get; set; } = new Dictionary<Type, StoreInfo>(); - public List<string> HostNames + public List<string> SanNames { get { var ret = new List<string>(); - if (Certificate == null) - { - return ret; - } foreach (var x in Certificate.Extensions) { if (x.Oid.Value.Equals("2.5.29.17")) diff --git a/src/main.lib/Plugins/InstallationPlugins/Script/Script.cs b/src/main.lib/Plugins/InstallationPlugins/Script/Script.cs index f91dcef..2755bab 100644 --- a/src/main.lib/Plugins/InstallationPlugins/Script/Script.cs +++ b/src/main.lib/Plugins/InstallationPlugins/Script/Script.cs @@ -27,7 +27,7 @@ namespace PKISharp.WACS.Plugins.InstallationPlugins var defaultStoreType = store.First().GetType(); var defaultStoreInfo = newCertificate.StoreInfo[defaultStoreType]; var parameters = _options.ScriptParameters ?? ""; - parameters = parameters.Replace("{0}", newCertificate.SubjectName); + parameters = parameters.Replace("{0}", newCertificate.CommonName); parameters = parameters.Replace("{1}", _renewal.PfxPassword?.Value); parameters = parameters.Replace("{2}", newCertificate.CacheFile?.FullName); parameters = parameters.Replace("{3}", defaultStoreInfo.Path); @@ -39,7 +39,7 @@ namespace PKISharp.WACS.Plugins.InstallationPlugins parameters = parameters.Replace("{CachePassword}", _renewal.PfxPassword?.Value); parameters = parameters.Replace("{CacheFile}", newCertificate.CacheFile?.FullName); parameters = parameters.Replace("{CacheFolder}", newCertificate.CacheFile?.FullName); - parameters = parameters.Replace("{CertCommonName}", newCertificate.SubjectName); + parameters = parameters.Replace("{CertCommonName}", newCertificate.CommonName); parameters = parameters.Replace("{CertFriendlyName}", newCertificate.Certificate.FriendlyName); parameters = parameters.Replace("{CertThumbprint}", newCertificate.Certificate.Thumbprint); parameters = parameters.Replace("{StoreType}", defaultStoreInfo.Name); diff --git a/src/main.lib/Plugins/StorePlugins/CentralSsl/CentralSsl.cs b/src/main.lib/Plugins/StorePlugins/CentralSsl/CentralSsl.cs index 025f24a..c6eeb65 100644 --- a/src/main.lib/Plugins/StorePlugins/CentralSsl/CentralSsl.cs +++ b/src/main.lib/Plugins/StorePlugins/CentralSsl/CentralSsl.cs @@ -43,7 +43,7 @@ namespace PKISharp.WACS.Plugins.StorePlugins public Task Save(CertificateInfo input) { _log.Information("Copying certificate to the Central SSL store"); - IEnumerable<string> targets = input.HostNames; + IEnumerable<string> targets = input.SanNames; foreach (var identifier in targets) { var dest = Path.Combine(_path, $"{identifier.Replace("*", "_")}.pfx"); diff --git a/src/main.lib/Plugins/StorePlugins/PemFiles/PemFiles.cs b/src/main.lib/Plugins/StorePlugins/PemFiles/PemFiles.cs index 243dfe0..e495a8b 100644 --- a/src/main.lib/Plugins/StorePlugins/PemFiles/PemFiles.cs +++ b/src/main.lib/Plugins/StorePlugins/PemFiles/PemFiles.cs @@ -45,7 +45,7 @@ namespace PKISharp.WACS.Plugins.StorePlugins try { // Determine name - var name = input.SubjectName.Replace("*", "_"); + var name = input.CommonName.Replace("*", "_"); // Base certificate var certificateExport = input.Certificate.Export(X509ContentType.Cert); diff --git a/src/main.lib/Services/CertificateService.cs b/src/main.lib/Services/CertificateService.cs index d30e601..b577ab3 100644 --- a/src/main.lib/Services/CertificateService.cs +++ b/src/main.lib/Services/CertificateService.cs @@ -195,9 +195,9 @@ namespace PKISharp.WACS.Services { var identifiers = target.GetHosts(false); var idn = new IdnMapping(); - return info.SubjectName == idn.GetAscii(target.CommonName) && - info.HostNames.Count == identifiers.Count() && - info.HostNames.All(h => identifiers.Contains(idn.GetAscii(h))); + return info.CommonName == idn.GetAscii(target.CommonName) && + info.SanNames.Count == identifiers.Count() && + info.SanNames.All(h => identifiers.Contains(idn.GetAscii(h))); } /// <summary> diff --git a/src/main.lib/Services/NotificationService.cs b/src/main.lib/Services/NotificationService.cs index 6800094..29c2858 100644 --- a/src/main.lib/Services/NotificationService.cs +++ b/src/main.lib/Services/NotificationService.cs @@ -96,7 +96,7 @@ namespace PKISharp.WACS.Services } else { - return string.Join(", ", cache.HostNames); + return string.Join(", ", cache.SanNames); } } catch |