public IIS(ILogService log, IStorePlugin store, ScheduledRenewal target, IISClient iisClient, string identifier) : base(log, target, identifier) { _storePlugin = store; _iisClient = iisClient; _tempSiteId = target.Binding.ValidationSiteId ?? target.Binding.TargetSiteId; }
void IInstallationPlugin.Install(IStorePlugin store, CertificateInfo newCertificate, CertificateInfo oldCertificate) { if (!(store is CertificateStore)) { // Unknown/unsupported store var errorMessage = "This installation plugin cannot be used in combination with the store plugin"; _log.Error(errorMessage); throw new InvalidOperationException(errorMessage); } _iisClient.UpdateFtpSite(_options.SiteId, newCertificate, oldCertificate); }
void IInstallationPlugin.Install(IStorePlugin store, CertificateInfo newCertificate, CertificateInfo oldCertificate) { var bindingOptions = new BindingOptions(). WithThumbprint(newCertificate.Certificate.GetCertHash()); if (store is CentralSsl) { if (_iisClient.Version.Major < 8) { var errorMessage = "Centralized SSL is only supported on IIS8+"; _log.Error(errorMessage); throw new InvalidOperationException(errorMessage); } else { bindingOptions = bindingOptions.WithFlags(SSLFlags.CentralSSL); } } else if (store is CertificateStore) { bindingOptions = bindingOptions.WithStore(newCertificate.StorePath); } else { // Unknown/unsupported store var errorMessage = "This installation plugin cannot be used in combination with the store plugin"; _log.Error(errorMessage); throw new InvalidOperationException(errorMessage); } // Optionaly overrule the standard IP for new bindings if (!string.IsNullOrEmpty(_options.NewBindingIp)) { bindingOptions = bindingOptions.WithIP(_options.NewBindingIp); } // Optionaly overrule the standard port for new bindings if (_options.NewBindingPort > 0) { bindingOptions = bindingOptions.WithPort(_options.NewBindingPort.Value); } var oldThumb = oldCertificate?.Certificate?.GetCertHash(); foreach (var part in _target.Parts) { _iisClient.AddOrUpdateBindings( part.Identifiers, bindingOptions.WithSiteId(_options.SiteId ?? part.SiteId), oldThumb); } }
/// <summary> /// Find the most recently issued certificate for a specific target /// </summary> /// <param name="target"></param> /// <returns></returns> public CertificateInfo Certificate(IStorePlugin store) { var thumbprint = Thumbprint; var useThumbprint = !string.IsNullOrEmpty(thumbprint); if (useThumbprint) { return(store.FindByThumbprint(thumbprint)); } else { return(null); } }
/// <summary> /// Find the most recently issued certificate for a specific target /// </summary> /// <param name="target"></param> /// <returns></returns> public static CertificateInfo Certificate(this Renewal renewal, IStorePlugin store) { var thumbprint = renewal.Thumbprint(); var useThumbprint = !string.IsNullOrEmpty(thumbprint); if (useThumbprint) { return(store.FindByThumbprint(thumbprint)); } else { return(null); } }
void IInstallationPlugin.Install(IStorePlugin store, CertificateInfo newCertificate, CertificateInfo oldCertificate) { var parameters = _options.ScriptParameters; parameters = parameters.Replace("{0}", newCertificate.SubjectName); parameters = parameters.Replace("{1}", _renewal.PfxPassword); parameters = parameters.Replace("{2}", newCertificate.CacheFile.FullName); parameters = parameters.Replace("{3}", newCertificate.StorePath); parameters = parameters.Replace("{4}", newCertificate.Certificate.FriendlyName); parameters = parameters.Replace("{5}", newCertificate.Certificate.Thumbprint); parameters = parameters.Replace("{6}", newCertificate.CacheFile.Directory.FullName); parameters = parameters.Replace("{7}", _renewal.Id); parameters = parameters.Replace("{CachePassword}", _renewal.PfxPassword); parameters = parameters.Replace("{CacheFile}", newCertificate.CacheFile.FullName); parameters = parameters.Replace("{CacheFolder}", newCertificate.CacheFile.FullName); parameters = parameters.Replace("{CertCommonName}", newCertificate.SubjectName); parameters = parameters.Replace("{CertFriendlyName}", newCertificate.Certificate.FriendlyName); parameters = parameters.Replace("{CertThumbprint}", newCertificate.Certificate.Thumbprint); parameters = parameters.Replace("{StoreType}", _renewal.StorePluginOptions.Name); parameters = parameters.Replace("{StorePath}", newCertificate.StorePath); parameters = parameters.Replace("{RenewalId}", _renewal.Id); RunScript(_options.Script, parameters); }
void IInstallationPlugin.Install(IStorePlugin store, CertificateInfo newCertificateInfo, CertificateInfo oldCertificateInfo) { }