puppetserver-ca 1.9.4 → 1.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/lib/puppetserver/ca/action/clean.rb +2 -2
- data/lib/puppetserver/ca/action/generate.rb +3 -3
- data/lib/puppetserver/ca/action/import.rb +11 -11
- data/lib/puppetserver/ca/action/revoke.rb +2 -2
- data/lib/puppetserver/ca/action/setup.rb +12 -12
- data/lib/puppetserver/ca/config/puppet.rb +6 -3
- data/lib/puppetserver/ca/host.rb +2 -2
- data/lib/puppetserver/ca/local_certificate_authority.rb +9 -9
- data/lib/puppetserver/ca/utils/http_client.rb +1 -1
- data/lib/puppetserver/ca/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: d907539ea4170d92955b59cbad8e69bd117df6ee738949dcf8818c23edae7aad
         | 
| 4 | 
            +
              data.tar.gz: 7965fe3863162e3c20283a89b8948eace64e7f8eb2cf04dfac1c0d167307f94c
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 2f12272a7f293b09728b12b36ccea266953173e7fbea9b8453436a0d02e48a8d8f886ee878cc63d61c7d7ce936ce110da3a2031b59de62d9de3ecaf4adce1b03
         | 
| 7 | 
            +
              data.tar.gz: db2c0c6e621ca2a4e8284e608105e03e546a60cbda0df1421e5d3f2044ba8561a6b7e6aba9da6949f0cf54058a15db22faaafe1d2c10c0dd59f45a15d438da0e
         | 
    
        data/README.md
    CHANGED
    
    | @@ -61,7 +61,7 @@ puppetserver ca --help | |
| 61 61 | 
             
            ```
         | 
| 62 62 |  | 
| 63 63 | 
             
            This code in this project is licensed under the Apache Software License v2,
         | 
| 64 | 
            -
            please see the included [License](https://github.com/puppetlabs/puppetserver-ca-cli/blob/ | 
| 64 | 
            +
            please see the included [License](https://github.com/puppetlabs/puppetserver-ca-cli/blob/main/LICENSE.md)
         | 
| 65 65 | 
             
            for more details.
         | 
| 66 66 |  | 
| 67 67 |  | 
| @@ -105,9 +105,9 @@ Freenode, or the Puppet Community Slack channel. | |
| 105 105 |  | 
| 106 106 | 
             
            Contributions are welcome at https://github.com/puppetlabs/puppetserver-ca-cli/pulls.
         | 
| 107 107 | 
             
            Contributors should both be sure to read the
         | 
| 108 | 
            -
            [contributing document](https://github.com/puppetlabs/puppetserver-ca-cli/blob/ | 
| 108 | 
            +
            [contributing document](https://github.com/puppetlabs/puppetserver-ca-cli/blob/main/CONTRIBUTING.md)
         | 
| 109 109 | 
             
            and sign the [contributor license agreement](https://cla.puppet.com/).
         | 
| 110 110 |  | 
| 111 111 | 
             
            Everyone interacting with the project’s codebase, issue tracker, etc is expected
         | 
| 112 112 | 
             
            to follow the
         | 
| 113 | 
            -
            [code of conduct](https://github.com/puppetlabs/puppetserver-ca-cli/blob/ | 
| 113 | 
            +
            [code of conduct](https://github.com/puppetlabs/puppetserver-ca-cli/blob/main/CODE_OF_CONDUCT.md).
         | 
| @@ -14,7 +14,7 @@ module Puppetserver | |
| 14 14 |  | 
| 15 15 | 
             
                    include Puppetserver::Ca::Utils
         | 
| 16 16 |  | 
| 17 | 
            -
                     | 
| 17 | 
            +
                    CERTNAME_BLOCKLIST = %w{--all --config}
         | 
| 18 18 |  | 
| 19 19 | 
             
                    SUMMARY = 'Revoke cert(s) and remove related files from CA'
         | 
| 20 20 | 
             
                    BANNER = <<-BANNER
         | 
| @@ -59,7 +59,7 @@ BANNER | |
| 59 59 | 
             
                      errors = CliParsing.parse_with_errors(parser, args)
         | 
| 60 60 |  | 
| 61 61 | 
             
                      results['certnames'].each do |certname|
         | 
| 62 | 
            -
                        if  | 
| 62 | 
            +
                        if CERTNAME_BLOCKLIST.include?(certname)
         | 
| 63 63 | 
             
                          errors << "    Cannot manage cert named `#{certname}` from " +
         | 
| 64 64 | 
             
                                    "the CLI, if needed use the HTTP API directly"
         | 
| 65 65 | 
             
                        end
         | 
| @@ -18,7 +18,7 @@ module Puppetserver | |
| 18 18 |  | 
| 19 19 | 
             
                    # Only allow printing ascii characters, excluding /
         | 
| 20 20 | 
             
                    VALID_CERTNAME = /\A[ -.0-~]+\Z/
         | 
| 21 | 
            -
                     | 
| 21 | 
            +
                    CERTNAME_BLOCKLIST = %w{--all --config}
         | 
| 22 22 |  | 
| 23 23 | 
             
                    SUMMARY = "Generate a new certificate signed by the CA"
         | 
| 24 24 | 
             
                    BANNER = <<-BANNER
         | 
| @@ -35,7 +35,7 @@ Description: | |
| 35 35 | 
             
              If the `--ca-client` flag is passed, the cert will be generated
         | 
| 36 36 | 
             
              offline, without using Puppet Server's signing code, and will add
         | 
| 37 37 | 
             
              a special extension authorizing it to talk to the CA API. This can
         | 
| 38 | 
            -
              be used for regenerating the  | 
| 38 | 
            +
              be used for regenerating the server's host cert, or for manually
         | 
| 39 39 | 
             
              setting up other nodes to be CA clients. Do not distribute certs
         | 
| 40 40 | 
             
              generated this way to any node that you do not intend to have
         | 
| 41 41 | 
             
              administrative access to the CA (e.g. the ability to sign a cert).
         | 
| @@ -91,7 +91,7 @@ BANNER | |
| 91 91 | 
             
                        errors << '    At least one certname is required to generate'
         | 
| 92 92 | 
             
                      else
         | 
| 93 93 | 
             
                        results['certnames'].each do |certname|
         | 
| 94 | 
            -
                          if  | 
| 94 | 
            +
                          if CERTNAME_BLOCKLIST.include?(certname)
         | 
| 95 95 | 
             
                            errors << "    Cannot manage cert named `#{certname}` from " +
         | 
| 96 96 | 
             
                                      "the CLI, if needed use the HTTP API directly"
         | 
| 97 97 | 
             
                          end
         | 
| @@ -14,7 +14,7 @@ module Puppetserver | |
| 14 14 | 
             
                  class Import
         | 
| 15 15 | 
             
                    include Puppetserver::Ca::Utils
         | 
| 16 16 |  | 
| 17 | 
            -
                    SUMMARY = "Import an external CA chain and generate  | 
| 17 | 
            +
                    SUMMARY = "Import an external CA chain and generate server PKI"
         | 
| 18 18 | 
             
                    BANNER = <<-BANNER
         | 
| 19 19 | 
             
            Usage:
         | 
| 20 20 | 
             
              puppetserver ca import [--help]
         | 
| @@ -72,7 +72,7 @@ BANNER | |
| 72 72 | 
             
                    def import(loader, settings, signing_digest)
         | 
| 73 73 | 
             
                      ca = Puppetserver::Ca::LocalCertificateAuthority.new(signing_digest, settings)
         | 
| 74 74 | 
             
                      ca.initialize_ssl_components(loader)
         | 
| 75 | 
            -
                       | 
| 75 | 
            +
                      server_key, server_cert = ca.create_server_cert
         | 
| 76 76 | 
             
                      return ca.errors if ca.errors.any?
         | 
| 77 77 |  | 
| 78 78 | 
             
                      FileSystem.ensure_dirs([settings[:ssldir],
         | 
| @@ -88,25 +88,25 @@ BANNER | |
| 88 88 | 
             
                        [settings[:cadir] + '/infra_crl.pem', loader.crls],
         | 
| 89 89 | 
             
                        [settings[:localcacert], loader.certs],
         | 
| 90 90 | 
             
                        [settings[:hostcrl], loader.crls],
         | 
| 91 | 
            -
                        [settings[:hostpubkey],  | 
| 92 | 
            -
                        [settings[:hostcert],  | 
| 93 | 
            -
                        [settings[:cert_inventory], ca.inventory_entry( | 
| 91 | 
            +
                        [settings[:hostpubkey], server_key.public_key],
         | 
| 92 | 
            +
                        [settings[:hostcert], server_cert],
         | 
| 93 | 
            +
                        [settings[:cert_inventory], ca.inventory_entry(server_cert)],
         | 
| 94 94 | 
             
                        [settings[:capub], loader.key.public_key],
         | 
| 95 95 | 
             
                        [settings[:cadir] + '/infra_inventory.txt', ''],
         | 
| 96 96 | 
             
                        [settings[:cadir] + '/infra_serials', ''],
         | 
| 97 97 | 
             
                        [settings[:serial], "002"],
         | 
| 98 | 
            -
                        [File.join(settings[:signeddir], "#{settings[:certname]}.pem"),  | 
| 98 | 
            +
                        [File.join(settings[:signeddir], "#{settings[:certname]}.pem"), server_cert]
         | 
| 99 99 | 
             
                      ]
         | 
| 100 100 |  | 
| 101 101 | 
             
                      private_files = [
         | 
| 102 | 
            -
                        [settings[:hostprivkey],  | 
| 102 | 
            +
                        [settings[:hostprivkey], server_key],
         | 
| 103 103 | 
             
                        [settings[:cakey], loader.key],
         | 
| 104 104 | 
             
                      ]
         | 
| 105 105 |  | 
| 106 106 | 
             
                      files_to_check = public_files + private_files
         | 
| 107 | 
            -
                      # We don't want to error if  | 
| 107 | 
            +
                      # We don't want to error if server's keys exist. Certain workflows
         | 
| 108 108 | 
             
                      # allow the agent to have already be installed with keys and then
         | 
| 109 | 
            -
                      # upgraded to be a  | 
| 109 | 
            +
                      # upgraded to be a server. The host class will honor keys, if both
         | 
| 110 110 | 
             
                      # public and private exist, and error if only one exists - as is
         | 
| 111 111 | 
             
                      # previous behavior.
         | 
| 112 112 | 
             
                      files_to_check = files_to_check.map(&:first) - [settings[:hostpubkey], settings[:hostprivkey]]
         | 
| @@ -178,11 +178,11 @@ ERR | |
| 178 178 | 
             
                          parsed['crl-chain'] = chain
         | 
| 179 179 | 
             
                        end
         | 
| 180 180 | 
             
                        opts.on('--certname NAME',
         | 
| 181 | 
            -
                                'Common name to use for the  | 
| 181 | 
            +
                                'Common name to use for the server cert') do |name|
         | 
| 182 182 | 
             
                          parsed['certname'] = name
         | 
| 183 183 | 
             
                        end
         | 
| 184 184 | 
             
                        opts.on('--subject-alt-names NAME[,NAME]',
         | 
| 185 | 
            -
                                'Subject alternative names for the  | 
| 185 | 
            +
                                'Subject alternative names for the server cert') do |sans|
         | 
| 186 186 | 
             
                          parsed['subject-alt-names'] = sans
         | 
| 187 187 | 
             
                        end
         | 
| 188 188 | 
             
                      end
         | 
| @@ -12,7 +12,7 @@ module Puppetserver | |
| 12 12 |  | 
| 13 13 | 
             
                    include Puppetserver::Ca::Utils
         | 
| 14 14 |  | 
| 15 | 
            -
                     | 
| 15 | 
            +
                    CERTNAME_BLOCKLIST = %w{--all --config}
         | 
| 16 16 |  | 
| 17 17 | 
             
                    SUMMARY = 'Revoke certificate(s)'
         | 
| 18 18 | 
             
                    BANNER = <<-BANNER
         | 
| @@ -55,7 +55,7 @@ BANNER | |
| 55 55 | 
             
                      errors = CliParsing.parse_with_errors(parser, args)
         | 
| 56 56 |  | 
| 57 57 | 
             
                      results['certnames'].each do |certname|
         | 
| 58 | 
            -
                        if  | 
| 58 | 
            +
                        if CERTNAME_BLOCKLIST.include?(certname)
         | 
| 59 59 | 
             
                          errors << "    Cannot manage cert named `#{certname}` from " +
         | 
| 60 60 | 
             
                                    "the CLI, if needed use the HTTP API directly"
         | 
| 61 61 | 
             
                        end
         | 
| @@ -23,10 +23,10 @@ Usage: | |
| 23 23 | 
             
            Description:
         | 
| 24 24 | 
             
              Setup a root and intermediate signing CA for Puppet Server
         | 
| 25 25 | 
             
              and store generated CA keys, certs, crls, and associated
         | 
| 26 | 
            -
               | 
| 26 | 
            +
              server related files on disk.
         | 
| 27 27 |  | 
| 28 28 | 
             
              The `--subject-alt-names` flag can be used to add SANs to the
         | 
| 29 | 
            -
              certificate generated for the Puppet  | 
| 29 | 
            +
              certificate generated for the Puppet server. Multiple names can be
         | 
| 30 30 | 
             
              listed as a comma separated string. These can be either DNS names or
         | 
| 31 31 | 
             
              IP addresses, differentiated by prefixes: `DNS:foo.bar.com,IP:123.456.789`.
         | 
| 32 32 | 
             
              Names with no prefix will be treated as DNS names.
         | 
| @@ -76,7 +76,7 @@ BANNER | |
| 76 76 |  | 
| 77 77 | 
             
                      root_key, root_cert, root_crl = ca.create_root_cert
         | 
| 78 78 | 
             
                      ca.create_intermediate_cert(root_key, root_cert)
         | 
| 79 | 
            -
                       | 
| 79 | 
            +
                      server_key, server_cert = ca.create_server_cert
         | 
| 80 80 | 
             
                      return ca.errors if ca.errors.any?
         | 
| 81 81 |  | 
| 82 82 | 
             
                      FileSystem.ensure_dirs([settings[:ssldir],
         | 
| @@ -90,28 +90,28 @@ BANNER | |
| 90 90 | 
             
                        [settings[:cacert], [ca.cert, root_cert]],
         | 
| 91 91 | 
             
                        [settings[:cacrl], [ca.crl, root_crl]],
         | 
| 92 92 | 
             
                        [settings[:cadir] + '/infra_crl.pem', [ca.crl, root_crl]],
         | 
| 93 | 
            -
                        [settings[:hostcert],  | 
| 93 | 
            +
                        [settings[:hostcert], server_cert],
         | 
| 94 94 | 
             
                        [settings[:localcacert], [ca.cert, root_cert]],
         | 
| 95 95 | 
             
                        [settings[:hostcrl], [ca.crl, root_crl]],
         | 
| 96 | 
            -
                        [settings[:hostpubkey],  | 
| 96 | 
            +
                        [settings[:hostpubkey], server_key.public_key],
         | 
| 97 97 | 
             
                        [settings[:capub], ca.key.public_key],
         | 
| 98 | 
            -
                        [settings[:cert_inventory], ca.inventory_entry( | 
| 98 | 
            +
                        [settings[:cert_inventory], ca.inventory_entry(server_cert)],
         | 
| 99 99 | 
             
                        [settings[:cadir] + '/infra_inventory.txt', ''],
         | 
| 100 100 | 
             
                        [settings[:cadir] + '/infra_serials', ''],
         | 
| 101 101 | 
             
                        [settings[:serial], "002"],
         | 
| 102 | 
            -
                        [File.join(settings[:signeddir], "#{settings[:certname]}.pem"),  | 
| 102 | 
            +
                        [File.join(settings[:signeddir], "#{settings[:certname]}.pem"), server_cert],
         | 
| 103 103 | 
             
                      ]
         | 
| 104 104 |  | 
| 105 105 | 
             
                      private_files = [
         | 
| 106 | 
            -
                        [settings[:hostprivkey],  | 
| 106 | 
            +
                        [settings[:hostprivkey], server_key],
         | 
| 107 107 | 
             
                        [settings[:rootkey], root_key],
         | 
| 108 108 | 
             
                        [settings[:cakey], ca.key],
         | 
| 109 109 | 
             
                      ]
         | 
| 110 110 |  | 
| 111 111 | 
             
                      files_to_check = public_files + private_files
         | 
| 112 | 
            -
                      # We don't want to error if  | 
| 112 | 
            +
                      # We don't want to error if server's keys exist. Certain workflows
         | 
| 113 113 | 
             
                      # allow the agent to have already be installed with keys and then
         | 
| 114 | 
            -
                      # upgraded to be a  | 
| 114 | 
            +
                      # upgraded to be a server. The host class will honor keys, if both
         | 
| 115 115 | 
             
                      # public and private exist, and error if only one exists - as is
         | 
| 116 116 | 
             
                      # previous behavior.
         | 
| 117 117 | 
             
                      files_to_check = files_to_check.map(&:first) - [settings[:hostpubkey], settings[:hostprivkey]]
         | 
| @@ -160,7 +160,7 @@ ERR | |
| 160 160 | 
             
                          parsed['config'] = conf
         | 
| 161 161 | 
             
                        end
         | 
| 162 162 | 
             
                        opts.on('--subject-alt-names NAME[,NAME]',
         | 
| 163 | 
            -
                                'Subject alternative names for the  | 
| 163 | 
            +
                                'Subject alternative names for the server cert') do |sans|
         | 
| 164 164 | 
             
                          parsed['subject-alt-names'] = sans
         | 
| 165 165 | 
             
                        end
         | 
| 166 166 | 
             
                        opts.on('--ca-name NAME',
         | 
| @@ -168,7 +168,7 @@ ERR | |
| 168 168 | 
             
                          parsed['ca-name'] = name
         | 
| 169 169 | 
             
                        end
         | 
| 170 170 | 
             
                        opts.on('--certname NAME',
         | 
| 171 | 
            -
                                'Common name to use for the  | 
| 171 | 
            +
                                'Common name to use for the server cert') do |name|
         | 
| 172 172 | 
             
                          parsed['certname'] = name
         | 
| 173 173 | 
             
                        end
         | 
| 174 174 | 
             
                      end
         | 
| @@ -74,6 +74,9 @@ module Puppetserver | |
| 74 74 |  | 
| 75 75 | 
             
                      overrides = results[:agent].merge(results[:main]).merge(results[:master]).merge(results[:server])
         | 
| 76 76 | 
             
                      overrides.merge!(cli_overrides)
         | 
| 77 | 
            +
                      if overrides[:masterport]
         | 
| 78 | 
            +
                        overrides[:serverport] ||= overrides.delete(:masterport)
         | 
| 79 | 
            +
                      end
         | 
| 77 80 |  | 
| 78 81 | 
             
                      @settings = resolve_settings(overrides).freeze
         | 
| 79 82 | 
             
                    end
         | 
| @@ -108,7 +111,7 @@ module Puppetserver | |
| 108 111 | 
             
                        [:certdir, '$ssldir/certs'],
         | 
| 109 112 | 
             
                        [:certname, default_certname],
         | 
| 110 113 | 
             
                        [:server, 'puppet'],
         | 
| 111 | 
            -
                        [: | 
| 114 | 
            +
                        [:serverport, '8140'],
         | 
| 112 115 | 
             
                        [:privatekeydir, '$ssldir/private_keys'],
         | 
| 113 116 | 
             
                        [:publickeydir, '$ssldir/public_keys'],
         | 
| 114 117 | 
             
                      ]
         | 
| @@ -126,7 +129,7 @@ module Puppetserver | |
| 126 129 | 
             
                        :serial => '$cadir/serial',
         | 
| 127 130 | 
             
                        :cert_inventory => '$cadir/inventory.txt',
         | 
| 128 131 | 
             
                        :ca_server => '$server',
         | 
| 129 | 
            -
                        :ca_port => '$ | 
| 132 | 
            +
                        :ca_port => '$serverport',
         | 
| 130 133 | 
             
                        :localcacert => '$certdir/ca.pem',
         | 
| 131 134 | 
             
                        :hostcrl => '$ssldir/crl.pem',
         | 
| 132 135 | 
             
                        :hostcert => '$certdir/$certname.pem',
         | 
| @@ -276,7 +279,7 @@ module Puppetserver | |
| 276 279 | 
             
                      end
         | 
| 277 280 |  | 
| 278 281 | 
             
                      if settings.dig(:server_list, 0, 1) &&
         | 
| 279 | 
            -
                          settings[:ca_port] == '$ | 
| 282 | 
            +
                          settings[:ca_port] == '$serverport'
         | 
| 280 283 |  | 
| 281 284 | 
             
                        settings[:ca_port] = settings.dig(:server_list, 0, 1)
         | 
| 282 285 | 
             
                      end
         | 
    
        data/lib/puppetserver/ca/host.rb
    CHANGED
    
    | @@ -58,10 +58,10 @@ module Puppetserver | |
| 58 58 | 
             
                    @errors = []
         | 
| 59 59 | 
             
                  end
         | 
| 60 60 |  | 
| 61 | 
            -
                  # If both the private and public keys exist for a  | 
| 61 | 
            +
                  # If both the private and public keys exist for a server then we want
         | 
| 62 62 | 
             
                  # to honor them here, if only one key exists we want to surface an error,
         | 
| 63 63 | 
             
                  # and if neither exist we generate a new key. This logic is necessary for
         | 
| 64 | 
            -
                  # proper bootstrapping for certain  | 
| 64 | 
            +
                  # proper bootstrapping for certain server workflows.
         | 
| 65 65 | 
             
                  def create_private_key(keylength, private_path = '', public_path = '')
         | 
| 66 66 | 
             
                    if File.exists?(private_path) && File.exists?(public_path)
         | 
| 67 67 | 
             
                      return OpenSSL::PKey.read(File.read(private_path))
         | 
| @@ -20,7 +20,7 @@ module Puppetserver | |
| 20 20 |  | 
| 21 21 | 
             
                  CLI_AUTH_EXT_OID = "1.3.6.1.4.1.34380.1.3.39"
         | 
| 22 22 |  | 
| 23 | 
            -
                   | 
| 23 | 
            +
                  SERVER_EXTENSIONS = [
         | 
| 24 24 | 
             
                    ["basicConstraints", "CA:FALSE", true],
         | 
| 25 25 | 
             
                    ["nsComment", "Puppet Server Internal Certificate", false],
         | 
| 26 26 | 
             
                    ["authorityKeyIdentifier", "keyid:always", false],
         | 
| @@ -132,23 +132,23 @@ module Puppetserver | |
| 132 132 | 
             
                    time.strftime('%Y-%m-%dT%H:%M:%S%Z')
         | 
| 133 133 | 
             
                  end
         | 
| 134 134 |  | 
| 135 | 
            -
                  def  | 
| 136 | 
            -
                     | 
| 137 | 
            -
                     | 
| 135 | 
            +
                  def create_server_cert
         | 
| 136 | 
            +
                    server_cert = nil
         | 
| 137 | 
            +
                    server_key = @host.create_private_key(@settings[:keylength],
         | 
| 138 138 | 
             
                                                          @settings[:hostprivkey],
         | 
| 139 139 | 
             
                                                          @settings[:hostpubkey])
         | 
| 140 | 
            -
                    if  | 
| 141 | 
            -
                       | 
| 140 | 
            +
                    if server_key
         | 
| 141 | 
            +
                      server_csr = @host.create_csr(name: @settings[:certname], key: server_key)
         | 
| 142 142 | 
             
                      if @settings[:subject_alt_names].empty?
         | 
| 143 143 | 
             
                        alt_names = "DNS:puppet, DNS:#{@settings[:certname]}"
         | 
| 144 144 | 
             
                      else
         | 
| 145 145 | 
             
                        alt_names = @settings[:subject_alt_names]
         | 
| 146 146 | 
             
                      end
         | 
| 147 147 |  | 
| 148 | 
            -
                       | 
| 148 | 
            +
                      server_cert = sign_authorized_cert(server_csr, alt_names)
         | 
| 149 149 | 
             
                    end
         | 
| 150 150 |  | 
| 151 | 
            -
                    return  | 
| 151 | 
            +
                    return server_key, server_cert
         | 
| 152 152 | 
             
                  end
         | 
| 153 153 |  | 
| 154 154 | 
             
                  def sign_authorized_cert(csr, alt_names = '')
         | 
| @@ -176,7 +176,7 @@ module Puppetserver | |
| 176 176 | 
             
                  end
         | 
| 177 177 |  | 
| 178 178 | 
             
                  def add_authorized_extensions(cert, ef)
         | 
| 179 | 
            -
                     | 
| 179 | 
            +
                    SERVER_EXTENSIONS.each do |ext|
         | 
| 180 180 | 
             
                      extension = ef.create_extension(*ext)
         | 
| 181 181 | 
             
                      cert.add_extension(extension)
         | 
| 182 182 | 
             
                    end
         | 
| @@ -166,7 +166,7 @@ module Puppetserver | |
| 166 166 | 
             
                    def self.check_server_online(settings, logger)
         | 
| 167 167 | 
             
                      status_url = URL.new('https', settings[:ca_server], settings[:ca_port], 'status', 'v1', 'simple', 'ca')
         | 
| 168 168 | 
             
                      begin
         | 
| 169 | 
            -
                        # Generating certs offline is necessary if the  | 
| 169 | 
            +
                        # Generating certs offline is necessary if the server cert has been destroyed
         | 
| 170 170 | 
             
                        # or compromised. Since querying the status endpoint does not require a client cert, and
         | 
| 171 171 | 
             
                        # we commonly won't have one, don't require one for creating the connection.
         | 
| 172 172 | 
             
                        # Additionally, we want to ensure the server is stopped before migrating the CA dir to
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: puppetserver-ca
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.9. | 
| 4 | 
            +
              version: 1.9.5
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Puppet, Inc.
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2021-04- | 
| 11 | 
            +
            date: 2021-04-26 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: facter
         |