Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
            }
        }