void IInstallationPlugin.Install(CertificateInfo newCertificate, CertificateInfo oldCertificate) { SSLFlags flags = 0; if (newCertificate.Store == null) { if (_iisClient.Version.Major < 8) { var errorMessage = "Centralized SSL is only supported on IIS8+"; _log.Error(errorMessage); throw new InvalidOperationException(errorMessage); } else { flags |= SSLFlags.CentralSSL; } } var bindingOptions = new BindingOptions(). WithFlags(flags). WithStore(newCertificate.Store?.Name). WithThumbprint(newCertificate.Certificate.GetCertHash()); var oldThumb = oldCertificate?.Certificate?.GetCertHash(); foreach (var part in _target.Parts) { _iisClient.AddOrUpdateBindings( part.Identifiers, bindingOptions.WithSiteId(_options.SiteId ?? part.SiteId), oldThumb); } }
Task IInstallationPlugin.Install(IEnumerable <IStorePlugin> stores, CertificateInfo newCertificate, CertificateInfo?oldCertificate) { var bindingOptions = new BindingOptions(). WithThumbprint(newCertificate.Certificate.GetCertHash()); var centralSsl = stores.FirstOrDefault(x => x is CentralSsl); var certificateStore = stores.FirstOrDefault(x => x is CertificateStore); if (centralSsl != null) { 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 (certificateStore != null) { bindingOptions = bindingOptions.WithStore(newCertificate.StoreInfo[typeof(CertificateStore)].Path); } 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); } return(Task.CompletedTask); }
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); } var oldThumb = oldCertificate?.Certificate?.GetCertHash(); foreach (var part in _target.Parts) { _iisClient.AddOrUpdateBindings( part.Identifiers, bindingOptions.WithSiteId(_options.SiteId ?? part.SiteId), oldThumb); } }