puppet 6.3.0-universal-darwin → 6.4.0-universal-darwin
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +30 -0
- data/Gemfile.lock +9 -9
- data/lib/puppet.rb +13 -0
- data/lib/puppet/application/agent.rb +8 -12
- data/lib/puppet/application/device.rb +2 -3
- data/lib/puppet/application/filebucket.rb +6 -1
- data/lib/puppet/application/ssl.rb +102 -55
- data/lib/puppet/configurer.rb +8 -7
- data/lib/puppet/defaults.rb +3 -1
- data/lib/puppet/file_system.rb +24 -4
- data/lib/puppet/file_system/file_impl.rb +25 -0
- data/lib/puppet/file_system/jruby.rb +23 -0
- data/lib/puppet/file_system/windows.rb +84 -0
- data/lib/puppet/indirector/rest.rb +4 -2
- data/lib/puppet/loaders.rb +1 -0
- data/lib/puppet/network/http.rb +1 -0
- data/lib/puppet/network/http/base_pool.rb +18 -0
- data/lib/puppet/network/http/connection.rb +49 -17
- data/lib/puppet/network/http/nocache_pool.rb +9 -4
- data/lib/puppet/network/http/pool.rb +10 -11
- data/lib/puppet/network/http/session.rb +3 -2
- data/lib/puppet/network/http_pool.rb +32 -0
- data/lib/puppet/pops/loader/generic_plan_instantiator.rb +28 -0
- data/lib/puppet/pops/loader/loader_paths.rb +46 -10
- data/lib/puppet/pops/loader/module_loaders.rb +10 -3
- data/lib/puppet/provider/file/windows.rb +49 -1
- data/lib/puppet/provider/package/windows.rb +5 -1
- data/lib/puppet/reports/http.rb +2 -1
- data/lib/puppet/rest/client.rb +7 -3
- data/lib/puppet/rest/routes.rb +9 -44
- data/lib/puppet/ssl.rb +6 -0
- data/lib/puppet/ssl/error.rb +26 -0
- data/lib/puppet/ssl/host.rb +9 -92
- data/lib/puppet/ssl/ssl_context.rb +30 -0
- data/lib/puppet/ssl/ssl_provider.rb +232 -0
- data/lib/puppet/ssl/state_machine.rb +261 -0
- data/lib/puppet/ssl/validator.rb +1 -0
- data/lib/puppet/ssl/validator/default_validator.rb +1 -0
- data/lib/puppet/ssl/validator/no_validator.rb +2 -0
- data/lib/puppet/ssl/verifier.rb +134 -0
- data/lib/puppet/ssl/verifier_adapter.rb +48 -0
- data/lib/puppet/test/test_helper.rb +2 -1
- data/lib/puppet/type/exec.rb +30 -6
- data/lib/puppet/type/file/mode.rb +6 -1
- data/lib/puppet/type/file/source.rb +2 -2
- data/lib/puppet/type/filebucket.rb +12 -8
- data/lib/puppet/type/user.rb +14 -1
- data/lib/puppet/util/connection.rb +10 -5
- data/lib/puppet/util/feature.rb +11 -2
- data/lib/puppet/util/http_proxy.rb +3 -2
- data/lib/puppet/util/pidlock.rb +1 -1
- data/lib/puppet/util/ssl.rb +1 -10
- data/lib/puppet/util/windows/security.rb +29 -8
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509.rb +7 -0
- data/lib/puppet/x509/cert_provider.rb +286 -0
- data/lib/puppet/x509/pem_store.rb +55 -0
- data/locales/ja/puppet.po +740 -590
- data/locales/puppet.pot +433 -208
- data/man/man5/puppet.conf.5 +6 -3
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +6 -2
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +5 -1
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/ssl/127.0.0.1-key.pem +67 -0
- data/spec/fixtures/ssl/127.0.0.1.pem +48 -0
- data/spec/fixtures/ssl/bad-basic-constraints.pem +59 -0
- data/spec/fixtures/ssl/bad-int-basic-constraints.pem +59 -0
- data/spec/fixtures/ssl/ca.pem +59 -0
- data/spec/fixtures/ssl/crl.pem +30 -0
- data/spec/fixtures/ssl/encrypted-key.pem +70 -0
- data/spec/fixtures/ssl/intermediate-agent-crl.pem +31 -0
- data/spec/fixtures/ssl/intermediate-agent.pem +60 -0
- data/spec/fixtures/ssl/intermediate-crl.pem +36 -0
- data/spec/fixtures/ssl/intermediate.pem +60 -0
- data/spec/fixtures/ssl/netlock-arany-utf8.pem +23 -0
- data/spec/fixtures/ssl/pluto-key.pem +67 -0
- data/spec/fixtures/ssl/pluto.pem +44 -0
- data/spec/fixtures/ssl/request-key.pem +67 -0
- data/spec/fixtures/ssl/request.pem +39 -0
- data/spec/fixtures/ssl/revoked-key.pem +67 -0
- data/spec/fixtures/ssl/revoked.pem +44 -0
- data/spec/fixtures/ssl/signed-key.pem +67 -0
- data/spec/fixtures/ssl/signed.pem +44 -0
- data/spec/fixtures/ssl/tampered-cert.pem +44 -0
- data/spec/fixtures/ssl/tampered-csr.pem +39 -0
- data/spec/integration/network/http_pool_spec.rb +222 -0
- data/spec/integration/provider/file/windows_spec.rb +162 -0
- data/spec/integration/rest/client_spec.rb +73 -0
- data/spec/integration/type/file_spec.rb +0 -19
- data/spec/lib/puppet/test_ca.rb +87 -50
- data/spec/lib/puppet_spec/fixtures.rb +20 -0
- data/spec/lib/puppet_spec/https.rb +84 -0
- data/spec/unit/application/agent_spec.rb +29 -30
- data/spec/unit/application/device_spec.rb +12 -49
- data/spec/unit/application/ssl_spec.rb +24 -38
- data/spec/unit/configurer_spec.rb +11 -11
- data/spec/unit/file_system/uniquefile_spec.rb +6 -0
- data/spec/unit/file_system_spec.rb +214 -0
- data/spec/unit/indirector/rest_spec.rb +3 -3
- data/spec/unit/network/http/connection_spec.rb +30 -90
- data/spec/unit/network/http/factory_spec.rb +1 -0
- data/spec/unit/network/http/nocache_pool_spec.rb +8 -8
- data/spec/unit/network/http/pool_spec.rb +63 -33
- data/spec/unit/network/http/session_spec.rb +8 -1
- data/spec/unit/network/http_pool_spec.rb +36 -0
- data/spec/unit/pops/loaders/loader_spec.rb +26 -1
- data/spec/unit/provider/package/windows_spec.rb +12 -1
- data/spec/unit/reports/http_spec.rb +7 -7
- data/spec/unit/rest/client_spec.rb +4 -6
- data/spec/unit/ssl/host_spec.rb +39 -33
- data/spec/unit/ssl/ssl_provider_spec.rb +428 -0
- data/spec/unit/ssl/state_machine_spec.rb +502 -0
- data/spec/unit/ssl/verifier_spec.rb +123 -0
- data/spec/unit/type/exec_spec.rb +63 -0
- data/spec/unit/type/file/source_spec.rb +5 -5
- data/spec/unit/type/filebucket_spec.rb +8 -6
- data/spec/unit/util/feature_spec.rb +2 -2
- data/spec/unit/util/storage_spec.rb +19 -19
- data/spec/unit/x509/cert_provider_spec.rb +527 -0
- data/spec/unit/x509/pem_store_spec.rb +160 -0
- data/tasks/generate_cert_fixtures.rake +158 -0
- metadata +78 -4
- data/MAINTAINERS +0 -47
- data/lib/puppet/rest/ssl_context.rb +0 -13
@@ -0,0 +1,160 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'puppet/x509'
|
4
|
+
|
5
|
+
class Puppet::X509::TestPemStore
|
6
|
+
include Puppet::X509::PemStore
|
7
|
+
end
|
8
|
+
|
9
|
+
describe Puppet::X509::PemStore do
|
10
|
+
include PuppetSpec::Files
|
11
|
+
|
12
|
+
let(:subject) { Puppet::X509::TestPemStore.new }
|
13
|
+
|
14
|
+
def with_unreadable_file
|
15
|
+
path = tmpfile('pem_store')
|
16
|
+
Puppet::FileSystem.touch(path)
|
17
|
+
Puppet::FileSystem.chmod(0, path)
|
18
|
+
yield path
|
19
|
+
ensure
|
20
|
+
Puppet::FileSystem.chmod(0600, path)
|
21
|
+
end
|
22
|
+
|
23
|
+
def with_unwritable_file(&block)
|
24
|
+
if Puppet::Util::Platform.windows?
|
25
|
+
with_unwritable_file_win32(&block)
|
26
|
+
else
|
27
|
+
with_unwritable_file_posix(&block)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def with_unwritable_file_win32
|
32
|
+
dir = tmpdir('pem_store')
|
33
|
+
path = File.join(dir, 'unwritable')
|
34
|
+
|
35
|
+
# if file handle is open, then file can't be written by other processes
|
36
|
+
File.open(path, 'w') do |f|
|
37
|
+
yield path
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def with_unwritable_file_posix
|
42
|
+
dir = tmpdir('pem_store')
|
43
|
+
path = File.join(dir, 'unwritable')
|
44
|
+
# if directory is not executable/traverseable, then file can't be written to
|
45
|
+
Puppet::FileSystem.chmod(0, dir)
|
46
|
+
begin
|
47
|
+
yield path
|
48
|
+
ensure
|
49
|
+
Puppet::FileSystem.chmod(0700, dir)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
let(:cert_path) { File.join(PuppetSpec::FIXTURE_DIR, 'ssl', 'netlock-arany-utf8.pem') }
|
54
|
+
|
55
|
+
context 'loading' do
|
56
|
+
it 'returns nil if it does not exist' do
|
57
|
+
expect(subject.load_pem('/does/not/exist')).to be_nil
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'returns the file content as UTF-8' do
|
61
|
+
expect(
|
62
|
+
subject.load_pem(cert_path)
|
63
|
+
).to match(/\ANetLock Arany \(Class Gold\) Főtanúsítvány/)
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'raises EACCES if the file is unreadable' do
|
67
|
+
with_unreadable_file do |path|
|
68
|
+
expect {
|
69
|
+
subject.load_pem(path)
|
70
|
+
}.to raise_error(Errno::EACCES, /Permission denied/)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'saving' do
|
76
|
+
let(:path) { tmpfile('pem_store') }
|
77
|
+
|
78
|
+
it 'writes the file content as UTF-8' do
|
79
|
+
# read the file directly to preserve the comments
|
80
|
+
utf8 = File.read(cert_path, encoding: 'UTF-8')
|
81
|
+
|
82
|
+
subject.save_pem(utf8, path)
|
83
|
+
|
84
|
+
expect(
|
85
|
+
File.read(path, :encoding => 'UTF-8')
|
86
|
+
).to match(/\ANetLock Arany \(Class Gold\) Főtanúsítvány/)
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'never changes the owner and group on Windows', if: Puppet::Util::Platform.windows? do
|
90
|
+
FileUtils.expects(:chown).never
|
91
|
+
|
92
|
+
subject.save_pem('PEM', path, owner: 'Administrator', group: 'None')
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'changes the owner and group when running as root', unless: Puppet::Util::Platform.windows? do
|
96
|
+
Puppet.features.stubs(:root?).returns(true)
|
97
|
+
FileUtils.expects(:chown).with('root', 'root', path)
|
98
|
+
|
99
|
+
subject.save_pem('PEM', path, owner: 'root', group: 'root')
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'does not change owner and group when running not as roo', unless: Puppet::Util::Platform.windows? do
|
103
|
+
Puppet.features.stubs(:root?).returns(false)
|
104
|
+
FileUtils.expects(:chown).never
|
105
|
+
|
106
|
+
subject.save_pem('PEM', path, owner: 'root', group: 'root')
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'allows a mode of 0600 to be specified', unless: Puppet::Util::Platform.windows? do
|
110
|
+
subject.save_pem('PEM', path, mode: 0600)
|
111
|
+
|
112
|
+
expect(File.stat(path).mode & 0777).to eq(0600)
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'defaults the mode to 0644' do
|
116
|
+
subject.save_pem('PEM', path)
|
117
|
+
|
118
|
+
expect(File.stat(path).mode & 0777).to eq(0644)
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'raises EACCES if the file is unwritable' do
|
122
|
+
with_unwritable_file do |path|
|
123
|
+
expect {
|
124
|
+
subject.save_pem('', path)
|
125
|
+
}.to raise_error(Errno::EACCES, /Permission denied/)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
it 'raises if the directory does not exist' do
|
130
|
+
dir = tmpdir('pem_store')
|
131
|
+
Dir.unlink(dir)
|
132
|
+
|
133
|
+
expect {
|
134
|
+
subject.save_pem('', File.join(dir, 'something'))
|
135
|
+
}.to raise_error(Errno::ENOENT, /No such file or directory/)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
context 'deleting' do
|
140
|
+
it 'returns false if the file does not exist' do
|
141
|
+
expect(subject.delete_pem('/does/not/exist')).to eq(false)
|
142
|
+
end
|
143
|
+
|
144
|
+
it 'returns true if the file exists' do
|
145
|
+
path = tmpfile('pem_store')
|
146
|
+
FileUtils.touch(path)
|
147
|
+
|
148
|
+
expect(subject.delete_pem(path)).to eq(true)
|
149
|
+
expect(File).to_not be_exist(path)
|
150
|
+
end
|
151
|
+
|
152
|
+
it 'raises EACCES if the file is undeletable' do
|
153
|
+
with_unwritable_file do |path|
|
154
|
+
expect {
|
155
|
+
subject.delete_pem(path)
|
156
|
+
}.to raise_error(Errno::EACCES, /Permission denied/)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
@@ -0,0 +1,158 @@
|
|
1
|
+
# Run this rake task to generate cert fixtures used in unit tests. This should
|
2
|
+
# be run whenever new fixtures are required that derive from the existing ones
|
3
|
+
# such as to add an extension to client certs, change expiration, etc. All
|
4
|
+
# regenerated fixtures should be committed together.
|
5
|
+
desc "Generate cert test fixtures"
|
6
|
+
task(:gen_cert_fixtures) do
|
7
|
+
$LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '../spec/lib'))
|
8
|
+
require 'puppet/test_ca'
|
9
|
+
|
10
|
+
def save(dir, name, x509)
|
11
|
+
path = File.join(dir, name)
|
12
|
+
puts "Generating #{path}"
|
13
|
+
File.open(path, 'w') do |f|
|
14
|
+
f.write(x509.to_text)
|
15
|
+
text = if block_given?
|
16
|
+
yield x509
|
17
|
+
else
|
18
|
+
x509.to_pem
|
19
|
+
end
|
20
|
+
|
21
|
+
f.write(text)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# This task generates a PKI consisting of a root CA, intermediate CA and
|
26
|
+
# several leaf certs. A CRL is generated for each CA. The root CA CRL is
|
27
|
+
# empty, while the intermediate CA CRL contains the revoked cert's serial
|
28
|
+
# number. A textual representation of each X509 object is included in the
|
29
|
+
# fixture as a comment.
|
30
|
+
#
|
31
|
+
# Certs
|
32
|
+
# =====
|
33
|
+
#
|
34
|
+
# ca.pem /CN=Test CA
|
35
|
+
# |
|
36
|
+
# intermediate.pem +- /CN=Test CA Subauthority
|
37
|
+
# | |
|
38
|
+
# signed.pem | +- /CN=signed
|
39
|
+
# revoked.pem | +- /CN=revoked
|
40
|
+
# 127.0.0.1.pem | +- /CN=127.0.0.1 (with dns alt names)
|
41
|
+
# tampered.pem | +- /CN=signed (with different public key)
|
42
|
+
# |
|
43
|
+
# + /CN=Test CA Agent Subauthority
|
44
|
+
# | |
|
45
|
+
# pluto.pem | +- /CN=pluto
|
46
|
+
# |
|
47
|
+
# bad-int-basic-constraints.pem +- /CN=Test CA Subauthority (bad isCA constraint)
|
48
|
+
#
|
49
|
+
# bad-basic-constraints.pem /CN=Test CA (bad isCA constraint)
|
50
|
+
#
|
51
|
+
# Keys
|
52
|
+
# ====
|
53
|
+
#
|
54
|
+
# The RSA private key for each leaf cert is also generated. In addition,
|
55
|
+
# `encrypted-key.pem` contains the private key for the `signed` cert.
|
56
|
+
#
|
57
|
+
# Requests
|
58
|
+
# ========
|
59
|
+
#
|
60
|
+
# `request.pem` contains a valid CSR for /CN=pending, while `tampered_csr.pem`
|
61
|
+
# is the same as `request.pem`, but it's public key has been replaced.
|
62
|
+
#
|
63
|
+
ca = Puppet::TestCa.new
|
64
|
+
dir = File.join(RAKE_ROOT, 'spec/fixtures/ssl')
|
65
|
+
|
66
|
+
# Create Test CA & CRL
|
67
|
+
save(dir, 'ca.pem', ca.ca_cert)
|
68
|
+
save(dir, 'crl.pem', ca.ca_crl)
|
69
|
+
|
70
|
+
# Create Intermediate CA & CRL "Test CA Subauthority" issued by "Test CA"
|
71
|
+
inter = ca.create_intermediate_cert('Test CA Subauthority', ca.ca_cert, ca.key)
|
72
|
+
save(dir, 'intermediate.pem', inter[:cert])
|
73
|
+
inter_crl = ca.create_crl(inter[:cert], inter[:private_key])
|
74
|
+
|
75
|
+
# Create a leaf/entity key and cert for host "signed" and issued by "Test CA Subauthority"
|
76
|
+
signed = ca.create_cert('signed', inter[:cert], inter[:private_key])
|
77
|
+
save(dir, 'signed.pem', signed[:cert])
|
78
|
+
save(dir, 'signed-key.pem', signed[:private_key])
|
79
|
+
|
80
|
+
# Create an encrypted version of the above private key for host "signed"
|
81
|
+
save(dir, 'encrypted-key.pem', signed[:private_key]) do |x509|
|
82
|
+
# private key password was chosen at random
|
83
|
+
x509.to_pem(OpenSSL::Cipher::AES.new(128, :CBC), '74695716c8b6')
|
84
|
+
end
|
85
|
+
|
86
|
+
# Create an SSL cert for 127.0.0.1 with dns_alt_names
|
87
|
+
signed = ca.create_cert('127.0.0.1', ca.ca_cert, ca.key, subject_alt_names: 'DNS:127.0.0.1,DNS:127.0.0.2')
|
88
|
+
save(dir, '127.0.0.1.pem', signed[:cert])
|
89
|
+
save(dir, '127.0.0.1-key.pem', signed[:private_key])
|
90
|
+
|
91
|
+
# Create a leaf/entity key and cert for host "revoked", issued by "Test CA Subauthority"
|
92
|
+
# and revoke the cert
|
93
|
+
revoked = ca.create_cert('revoked', inter[:cert], inter[:private_key])
|
94
|
+
ca.revoke(revoked[:cert], inter_crl, inter[:private_key])
|
95
|
+
save(dir, 'revoked.pem', revoked[:cert])
|
96
|
+
save(dir, 'revoked-key.pem', revoked[:private_key])
|
97
|
+
|
98
|
+
# Update intermediate CRL now that we've revoked
|
99
|
+
save(dir, 'intermediate-crl.pem', inter_crl)
|
100
|
+
|
101
|
+
# Create a pending request (CSR) and private key for host "pending"
|
102
|
+
request = ca.create_request('pending')
|
103
|
+
save(dir, 'request.pem', request[:csr])
|
104
|
+
save(dir, 'request-key.pem', request[:private_key])
|
105
|
+
|
106
|
+
# Create an intermediate for agent certs
|
107
|
+
inter_agent = ca.create_intermediate_cert('Test CA Agent Subauthority', ca.ca_cert, ca.key)
|
108
|
+
save(dir, 'intermediate-agent.pem', inter_agent[:cert])
|
109
|
+
inter_agent_crl = ca.create_crl(inter_agent[:cert], inter_agent[:private_key])
|
110
|
+
save(dir, 'intermediate-agent-crl.pem', inter_agent_crl)
|
111
|
+
|
112
|
+
# Create a leaf/entity key and cert for host "pluto" and issued by "Test CA Agent Subauthority"
|
113
|
+
pluto = ca.create_cert('pluto', inter_agent[:cert], inter_agent[:private_key])
|
114
|
+
save(dir, 'pluto.pem', pluto[:cert])
|
115
|
+
save(dir, 'pluto-key.pem', pluto[:private_key])
|
116
|
+
|
117
|
+
# Create a new root CA cert, but change the "isCA" basic constraint.
|
118
|
+
# It should not be trusted to act as a CA.
|
119
|
+
badconstraints = ca.create_cacert('Test CA')[:cert]
|
120
|
+
badconstraints.public_key = ca.ca_cert.public_key
|
121
|
+
badconstraints.extensions = []
|
122
|
+
ca.ca_cert.extensions.each do |ext|
|
123
|
+
if ext.oid == 'basicConstraints'
|
124
|
+
ef = OpenSSL::X509::ExtensionFactory.new
|
125
|
+
badconstraints.add_extension(ef.create_extension("basicConstraints","CA:FALSE", true))
|
126
|
+
else
|
127
|
+
badconstraints.add_extension(ext)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
badconstraints.sign(ca.key, OpenSSL::Digest::SHA256.new)
|
131
|
+
save(dir, 'bad-basic-constraints.pem', badconstraints)
|
132
|
+
|
133
|
+
# Same as above, but create a new intermediate CA
|
134
|
+
badintconstraints = inter[:cert].dup
|
135
|
+
badintconstraints.public_key = inter[:cert].public_key
|
136
|
+
badintconstraints.extensions = []
|
137
|
+
inter[:cert].extensions.each do |ext|
|
138
|
+
if ext.oid == 'basicConstraints'
|
139
|
+
ef = OpenSSL::X509::ExtensionFactory.new
|
140
|
+
badintconstraints.add_extension(ef.create_extension("basicConstraints","CA:FALSE", true))
|
141
|
+
else
|
142
|
+
badintconstraints.add_extension(ext)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
badintconstraints.sign(ca.key, OpenSSL::Digest::SHA256.new)
|
146
|
+
save(dir, 'bad-int-basic-constraints.pem', badintconstraints)
|
147
|
+
|
148
|
+
# Create a request, but replace its public key after it's signed
|
149
|
+
tampered_csr = ca.create_request('signed')[:csr]
|
150
|
+
tampered_csr.public_key = OpenSSL::PKey::RSA.new(1024).public_key
|
151
|
+
save(dir, 'tampered-csr.pem', tampered_csr)
|
152
|
+
|
153
|
+
# Create a cert issued from the real intermediate CA, but replace its
|
154
|
+
# public key
|
155
|
+
tampered_cert = ca.create_cert('signed', inter[:cert], inter[:private_key])[:cert]
|
156
|
+
tampered_cert.public_key = OpenSSL::PKey::RSA.new(1024).public_key
|
157
|
+
save(dir, 'tampered-cert.pem', tampered_cert)
|
158
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.4.0
|
5
5
|
platform: universal-darwin
|
6
6
|
authors:
|
7
7
|
- Puppet Labs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-03-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: facter
|
@@ -155,6 +155,7 @@ executables:
|
|
155
155
|
extensions: []
|
156
156
|
extra_rdoc_files: []
|
157
157
|
files:
|
158
|
+
- CODEOWNERS
|
158
159
|
- CODE_OF_CONDUCT.md
|
159
160
|
- COMMITTERS.md
|
160
161
|
- CONTRIBUTING.md
|
@@ -162,7 +163,6 @@ files:
|
|
162
163
|
- Gemfile.lock
|
163
164
|
- Guardfile.example
|
164
165
|
- LICENSE
|
165
|
-
- MAINTAINERS
|
166
166
|
- README.md
|
167
167
|
- Rakefile
|
168
168
|
- bin/puppet
|
@@ -436,6 +436,7 @@ files:
|
|
436
436
|
- lib/puppet/file_serving/terminus_selector.rb
|
437
437
|
- lib/puppet/file_system.rb
|
438
438
|
- lib/puppet/file_system/file_impl.rb
|
439
|
+
- lib/puppet/file_system/jruby.rb
|
439
440
|
- lib/puppet/file_system/memory_file.rb
|
440
441
|
- lib/puppet/file_system/memory_impl.rb
|
441
442
|
- lib/puppet/file_system/path_pattern.rb
|
@@ -684,6 +685,7 @@ files:
|
|
684
685
|
- lib/puppet/network/http/api/master/v3/authorization.rb
|
685
686
|
- lib/puppet/network/http/api/master/v3/environment.rb
|
686
687
|
- lib/puppet/network/http/api/master/v3/environments.rb
|
688
|
+
- lib/puppet/network/http/base_pool.rb
|
687
689
|
- lib/puppet/network/http/compression.rb
|
688
690
|
- lib/puppet/network/http/connection.rb
|
689
691
|
- lib/puppet/network/http/error.rb
|
@@ -838,6 +840,7 @@ files:
|
|
838
840
|
- lib/puppet/pops/loader/base_loader.rb
|
839
841
|
- lib/puppet/pops/loader/dependency_loader.rb
|
840
842
|
- lib/puppet/pops/loader/gem_support.rb
|
843
|
+
- lib/puppet/pops/loader/generic_plan_instantiator.rb
|
841
844
|
- lib/puppet/pops/loader/loader.rb
|
842
845
|
- lib/puppet/pops/loader/loader_paths.rb
|
843
846
|
- lib/puppet/pops/loader/module_loaders.rb
|
@@ -1095,7 +1098,6 @@ files:
|
|
1095
1098
|
- lib/puppet/rest/response.rb
|
1096
1099
|
- lib/puppet/rest/route.rb
|
1097
1100
|
- lib/puppet/rest/routes.rb
|
1098
|
-
- lib/puppet/rest/ssl_context.rb
|
1099
1101
|
- lib/puppet/scheduler.rb
|
1100
1102
|
- lib/puppet/scheduler/job.rb
|
1101
1103
|
- lib/puppet/scheduler/scheduler.rb
|
@@ -1131,12 +1133,18 @@ files:
|
|
1131
1133
|
- lib/puppet/ssl/certificate_request_attributes.rb
|
1132
1134
|
- lib/puppet/ssl/certificate_signer.rb
|
1133
1135
|
- lib/puppet/ssl/digest.rb
|
1136
|
+
- lib/puppet/ssl/error.rb
|
1134
1137
|
- lib/puppet/ssl/host.rb
|
1135
1138
|
- lib/puppet/ssl/key.rb
|
1136
1139
|
- lib/puppet/ssl/oids.rb
|
1140
|
+
- lib/puppet/ssl/ssl_context.rb
|
1141
|
+
- lib/puppet/ssl/ssl_provider.rb
|
1142
|
+
- lib/puppet/ssl/state_machine.rb
|
1137
1143
|
- lib/puppet/ssl/validator.rb
|
1138
1144
|
- lib/puppet/ssl/validator/default_validator.rb
|
1139
1145
|
- lib/puppet/ssl/validator/no_validator.rb
|
1146
|
+
- lib/puppet/ssl/verifier.rb
|
1147
|
+
- lib/puppet/ssl/verifier_adapter.rb
|
1140
1148
|
- lib/puppet/status.rb
|
1141
1149
|
- lib/puppet/syntax_checkers.rb
|
1142
1150
|
- lib/puppet/syntax_checkers/base64.rb
|
@@ -1317,6 +1325,9 @@ files:
|
|
1317
1325
|
- lib/puppet/vendor/pathspec/lib/pathspec/spec.rb
|
1318
1326
|
- lib/puppet/vendor/require_vendored.rb
|
1319
1327
|
- lib/puppet/version.rb
|
1328
|
+
- lib/puppet/x509.rb
|
1329
|
+
- lib/puppet/x509/cert_provider.rb
|
1330
|
+
- lib/puppet/x509/pem_store.rb
|
1320
1331
|
- lib/puppet_pal.rb
|
1321
1332
|
- lib/puppet_x.rb
|
1322
1333
|
- locales/config.yaml
|
@@ -1381,6 +1392,28 @@ files:
|
|
1381
1392
|
- spec/fixtures/releases/jamtur01-apache/tests/php.pp
|
1382
1393
|
- spec/fixtures/releases/jamtur01-apache/tests/ssl.pp
|
1383
1394
|
- spec/fixtures/releases/jamtur01-apache/tests/vhost.pp
|
1395
|
+
- spec/fixtures/ssl/127.0.0.1-key.pem
|
1396
|
+
- spec/fixtures/ssl/127.0.0.1.pem
|
1397
|
+
- spec/fixtures/ssl/bad-basic-constraints.pem
|
1398
|
+
- spec/fixtures/ssl/bad-int-basic-constraints.pem
|
1399
|
+
- spec/fixtures/ssl/ca.pem
|
1400
|
+
- spec/fixtures/ssl/crl.pem
|
1401
|
+
- spec/fixtures/ssl/encrypted-key.pem
|
1402
|
+
- spec/fixtures/ssl/intermediate-agent-crl.pem
|
1403
|
+
- spec/fixtures/ssl/intermediate-agent.pem
|
1404
|
+
- spec/fixtures/ssl/intermediate-crl.pem
|
1405
|
+
- spec/fixtures/ssl/intermediate.pem
|
1406
|
+
- spec/fixtures/ssl/netlock-arany-utf8.pem
|
1407
|
+
- spec/fixtures/ssl/pluto-key.pem
|
1408
|
+
- spec/fixtures/ssl/pluto.pem
|
1409
|
+
- spec/fixtures/ssl/request-key.pem
|
1410
|
+
- spec/fixtures/ssl/request.pem
|
1411
|
+
- spec/fixtures/ssl/revoked-key.pem
|
1412
|
+
- spec/fixtures/ssl/revoked.pem
|
1413
|
+
- spec/fixtures/ssl/signed-key.pem
|
1414
|
+
- spec/fixtures/ssl/signed.pem
|
1415
|
+
- spec/fixtures/ssl/tampered-cert.pem
|
1416
|
+
- spec/fixtures/ssl/tampered-csr.pem
|
1384
1417
|
- spec/fixtures/stdlib.tgz
|
1385
1418
|
- spec/fixtures/unit/application/environments/production/data/common.yaml
|
1386
1419
|
- spec/fixtures/unit/application/environments/production/environment.conf
|
@@ -1740,6 +1773,7 @@ files:
|
|
1740
1773
|
- spec/integration/network/authconfig_spec.rb
|
1741
1774
|
- spec/integration/network/formats_spec.rb
|
1742
1775
|
- spec/integration/network/http/api/indirected_routes_spec.rb
|
1776
|
+
- spec/integration/network/http_pool_spec.rb
|
1743
1777
|
- spec/integration/node/environment_spec.rb
|
1744
1778
|
- spec/integration/node/facts_spec.rb
|
1745
1779
|
- spec/integration/node_spec.rb
|
@@ -1757,6 +1791,7 @@ files:
|
|
1757
1791
|
- spec/integration/parser/scope_spec.rb
|
1758
1792
|
- spec/integration/parser/script_compiler_spec.rb
|
1759
1793
|
- spec/integration/parser/undef_param_spec.rb
|
1794
|
+
- spec/integration/provider/file/windows_spec.rb
|
1760
1795
|
- spec/integration/provider/service/init_spec.rb
|
1761
1796
|
- spec/integration/provider/service/systemd_spec.rb
|
1762
1797
|
- spec/integration/provider/service/windows_spec.rb
|
@@ -1764,6 +1799,7 @@ files:
|
|
1764
1799
|
- spec/integration/reports_spec.rb
|
1765
1800
|
- spec/integration/resource/catalog_spec.rb
|
1766
1801
|
- spec/integration/resource/type_collection_spec.rb
|
1802
|
+
- spec/integration/rest/client_spec.rb
|
1767
1803
|
- spec/integration/ssl/certificate_request_spec.rb
|
1768
1804
|
- spec/integration/ssl/host_spec.rb
|
1769
1805
|
- spec/integration/ssl/key_spec.rb
|
@@ -1812,6 +1848,7 @@ files:
|
|
1812
1848
|
- spec/lib/puppet_spec/files.rb
|
1813
1849
|
- spec/lib/puppet_spec/fixtures.rb
|
1814
1850
|
- spec/lib/puppet_spec/handler.rb
|
1851
|
+
- spec/lib/puppet_spec/https.rb
|
1815
1852
|
- spec/lib/puppet_spec/language.rb
|
1816
1853
|
- spec/lib/puppet_spec/matchers.rb
|
1817
1854
|
- spec/lib/puppet_spec/module_tool/shared_functions.rb
|
@@ -2402,7 +2439,10 @@ files:
|
|
2402
2439
|
- spec/unit/ssl/host_spec.rb
|
2403
2440
|
- spec/unit/ssl/key_spec.rb
|
2404
2441
|
- spec/unit/ssl/oids_spec.rb
|
2442
|
+
- spec/unit/ssl/ssl_provider_spec.rb
|
2443
|
+
- spec/unit/ssl/state_machine_spec.rb
|
2405
2444
|
- spec/unit/ssl/validator_spec.rb
|
2445
|
+
- spec/unit/ssl/verifier_spec.rb
|
2406
2446
|
- spec/unit/status_spec.rb
|
2407
2447
|
- spec/unit/task_spec.rb
|
2408
2448
|
- spec/unit/transaction/additional_resource_generator_spec.rb
|
@@ -2517,10 +2557,13 @@ files:
|
|
2517
2557
|
- spec/unit/util/yaml_spec.rb
|
2518
2558
|
- spec/unit/util_spec.rb
|
2519
2559
|
- spec/unit/version_spec.rb
|
2560
|
+
- spec/unit/x509/cert_provider_spec.rb
|
2561
|
+
- spec/unit/x509/pem_store_spec.rb
|
2520
2562
|
- tasks/benchmark.rake
|
2521
2563
|
- tasks/cfpropertylist.rake
|
2522
2564
|
- tasks/ci.rake
|
2523
2565
|
- tasks/generate_ast_model.rake
|
2566
|
+
- tasks/generate_cert_fixtures.rake
|
2524
2567
|
- tasks/manpages.rake
|
2525
2568
|
- tasks/memwalk.rake
|
2526
2569
|
- tasks/parallel.rake
|
@@ -2587,6 +2630,28 @@ test_files:
|
|
2587
2630
|
- spec/fixtures/releases/jamtur01-apache/tests/php.pp
|
2588
2631
|
- spec/fixtures/releases/jamtur01-apache/tests/ssl.pp
|
2589
2632
|
- spec/fixtures/releases/jamtur01-apache/tests/vhost.pp
|
2633
|
+
- spec/fixtures/ssl/127.0.0.1-key.pem
|
2634
|
+
- spec/fixtures/ssl/127.0.0.1.pem
|
2635
|
+
- spec/fixtures/ssl/bad-basic-constraints.pem
|
2636
|
+
- spec/fixtures/ssl/bad-int-basic-constraints.pem
|
2637
|
+
- spec/fixtures/ssl/ca.pem
|
2638
|
+
- spec/fixtures/ssl/crl.pem
|
2639
|
+
- spec/fixtures/ssl/encrypted-key.pem
|
2640
|
+
- spec/fixtures/ssl/intermediate-agent-crl.pem
|
2641
|
+
- spec/fixtures/ssl/intermediate-agent.pem
|
2642
|
+
- spec/fixtures/ssl/intermediate-crl.pem
|
2643
|
+
- spec/fixtures/ssl/intermediate.pem
|
2644
|
+
- spec/fixtures/ssl/netlock-arany-utf8.pem
|
2645
|
+
- spec/fixtures/ssl/pluto-key.pem
|
2646
|
+
- spec/fixtures/ssl/pluto.pem
|
2647
|
+
- spec/fixtures/ssl/request-key.pem
|
2648
|
+
- spec/fixtures/ssl/request.pem
|
2649
|
+
- spec/fixtures/ssl/revoked-key.pem
|
2650
|
+
- spec/fixtures/ssl/revoked.pem
|
2651
|
+
- spec/fixtures/ssl/signed-key.pem
|
2652
|
+
- spec/fixtures/ssl/signed.pem
|
2653
|
+
- spec/fixtures/ssl/tampered-cert.pem
|
2654
|
+
- spec/fixtures/ssl/tampered-csr.pem
|
2590
2655
|
- spec/fixtures/stdlib.tgz
|
2591
2656
|
- spec/fixtures/unit/application/environments/production/data/common.yaml
|
2592
2657
|
- spec/fixtures/unit/application/environments/production/environment.conf
|
@@ -2946,6 +3011,7 @@ test_files:
|
|
2946
3011
|
- spec/integration/network/authconfig_spec.rb
|
2947
3012
|
- spec/integration/network/formats_spec.rb
|
2948
3013
|
- spec/integration/network/http/api/indirected_routes_spec.rb
|
3014
|
+
- spec/integration/network/http_pool_spec.rb
|
2949
3015
|
- spec/integration/node/environment_spec.rb
|
2950
3016
|
- spec/integration/node/facts_spec.rb
|
2951
3017
|
- spec/integration/node_spec.rb
|
@@ -2963,6 +3029,7 @@ test_files:
|
|
2963
3029
|
- spec/integration/parser/scope_spec.rb
|
2964
3030
|
- spec/integration/parser/script_compiler_spec.rb
|
2965
3031
|
- spec/integration/parser/undef_param_spec.rb
|
3032
|
+
- spec/integration/provider/file/windows_spec.rb
|
2966
3033
|
- spec/integration/provider/service/init_spec.rb
|
2967
3034
|
- spec/integration/provider/service/systemd_spec.rb
|
2968
3035
|
- spec/integration/provider/service/windows_spec.rb
|
@@ -2970,6 +3037,7 @@ test_files:
|
|
2970
3037
|
- spec/integration/reports_spec.rb
|
2971
3038
|
- spec/integration/resource/catalog_spec.rb
|
2972
3039
|
- spec/integration/resource/type_collection_spec.rb
|
3040
|
+
- spec/integration/rest/client_spec.rb
|
2973
3041
|
- spec/integration/ssl/certificate_request_spec.rb
|
2974
3042
|
- spec/integration/ssl/host_spec.rb
|
2975
3043
|
- spec/integration/ssl/key_spec.rb
|
@@ -3018,6 +3086,7 @@ test_files:
|
|
3018
3086
|
- spec/lib/puppet_spec/files.rb
|
3019
3087
|
- spec/lib/puppet_spec/fixtures.rb
|
3020
3088
|
- spec/lib/puppet_spec/handler.rb
|
3089
|
+
- spec/lib/puppet_spec/https.rb
|
3021
3090
|
- spec/lib/puppet_spec/language.rb
|
3022
3091
|
- spec/lib/puppet_spec/matchers.rb
|
3023
3092
|
- spec/lib/puppet_spec/module_tool/shared_functions.rb
|
@@ -3608,7 +3677,10 @@ test_files:
|
|
3608
3677
|
- spec/unit/ssl/host_spec.rb
|
3609
3678
|
- spec/unit/ssl/key_spec.rb
|
3610
3679
|
- spec/unit/ssl/oids_spec.rb
|
3680
|
+
- spec/unit/ssl/ssl_provider_spec.rb
|
3681
|
+
- spec/unit/ssl/state_machine_spec.rb
|
3611
3682
|
- spec/unit/ssl/validator_spec.rb
|
3683
|
+
- spec/unit/ssl/verifier_spec.rb
|
3612
3684
|
- spec/unit/status_spec.rb
|
3613
3685
|
- spec/unit/task_spec.rb
|
3614
3686
|
- spec/unit/transaction/additional_resource_generator_spec.rb
|
@@ -3723,3 +3795,5 @@ test_files:
|
|
3723
3795
|
- spec/unit/util/yaml_spec.rb
|
3724
3796
|
- spec/unit/util_spec.rb
|
3725
3797
|
- spec/unit/version_spec.rb
|
3798
|
+
- spec/unit/x509/cert_provider_spec.rb
|
3799
|
+
- spec/unit/x509/pem_store_spec.rb
|