puppet 6.3.0-x86-mingw32 → 6.4.0-x86-mingw32
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: x86-mingw32
|
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
|
@@ -225,6 +225,7 @@ executables:
|
|
225
225
|
extensions: []
|
226
226
|
extra_rdoc_files: []
|
227
227
|
files:
|
228
|
+
- CODEOWNERS
|
228
229
|
- CODE_OF_CONDUCT.md
|
229
230
|
- COMMITTERS.md
|
230
231
|
- CONTRIBUTING.md
|
@@ -232,7 +233,6 @@ files:
|
|
232
233
|
- Gemfile.lock
|
233
234
|
- Guardfile.example
|
234
235
|
- LICENSE
|
235
|
-
- MAINTAINERS
|
236
236
|
- README.md
|
237
237
|
- Rakefile
|
238
238
|
- bin/puppet
|
@@ -506,6 +506,7 @@ files:
|
|
506
506
|
- lib/puppet/file_serving/terminus_selector.rb
|
507
507
|
- lib/puppet/file_system.rb
|
508
508
|
- lib/puppet/file_system/file_impl.rb
|
509
|
+
- lib/puppet/file_system/jruby.rb
|
509
510
|
- lib/puppet/file_system/memory_file.rb
|
510
511
|
- lib/puppet/file_system/memory_impl.rb
|
511
512
|
- lib/puppet/file_system/path_pattern.rb
|
@@ -754,6 +755,7 @@ files:
|
|
754
755
|
- lib/puppet/network/http/api/master/v3/authorization.rb
|
755
756
|
- lib/puppet/network/http/api/master/v3/environment.rb
|
756
757
|
- lib/puppet/network/http/api/master/v3/environments.rb
|
758
|
+
- lib/puppet/network/http/base_pool.rb
|
757
759
|
- lib/puppet/network/http/compression.rb
|
758
760
|
- lib/puppet/network/http/connection.rb
|
759
761
|
- lib/puppet/network/http/error.rb
|
@@ -908,6 +910,7 @@ files:
|
|
908
910
|
- lib/puppet/pops/loader/base_loader.rb
|
909
911
|
- lib/puppet/pops/loader/dependency_loader.rb
|
910
912
|
- lib/puppet/pops/loader/gem_support.rb
|
913
|
+
- lib/puppet/pops/loader/generic_plan_instantiator.rb
|
911
914
|
- lib/puppet/pops/loader/loader.rb
|
912
915
|
- lib/puppet/pops/loader/loader_paths.rb
|
913
916
|
- lib/puppet/pops/loader/module_loaders.rb
|
@@ -1165,7 +1168,6 @@ files:
|
|
1165
1168
|
- lib/puppet/rest/response.rb
|
1166
1169
|
- lib/puppet/rest/route.rb
|
1167
1170
|
- lib/puppet/rest/routes.rb
|
1168
|
-
- lib/puppet/rest/ssl_context.rb
|
1169
1171
|
- lib/puppet/scheduler.rb
|
1170
1172
|
- lib/puppet/scheduler/job.rb
|
1171
1173
|
- lib/puppet/scheduler/scheduler.rb
|
@@ -1201,12 +1203,18 @@ files:
|
|
1201
1203
|
- lib/puppet/ssl/certificate_request_attributes.rb
|
1202
1204
|
- lib/puppet/ssl/certificate_signer.rb
|
1203
1205
|
- lib/puppet/ssl/digest.rb
|
1206
|
+
- lib/puppet/ssl/error.rb
|
1204
1207
|
- lib/puppet/ssl/host.rb
|
1205
1208
|
- lib/puppet/ssl/key.rb
|
1206
1209
|
- lib/puppet/ssl/oids.rb
|
1210
|
+
- lib/puppet/ssl/ssl_context.rb
|
1211
|
+
- lib/puppet/ssl/ssl_provider.rb
|
1212
|
+
- lib/puppet/ssl/state_machine.rb
|
1207
1213
|
- lib/puppet/ssl/validator.rb
|
1208
1214
|
- lib/puppet/ssl/validator/default_validator.rb
|
1209
1215
|
- lib/puppet/ssl/validator/no_validator.rb
|
1216
|
+
- lib/puppet/ssl/verifier.rb
|
1217
|
+
- lib/puppet/ssl/verifier_adapter.rb
|
1210
1218
|
- lib/puppet/status.rb
|
1211
1219
|
- lib/puppet/syntax_checkers.rb
|
1212
1220
|
- lib/puppet/syntax_checkers/base64.rb
|
@@ -1387,6 +1395,9 @@ files:
|
|
1387
1395
|
- lib/puppet/vendor/pathspec/lib/pathspec/spec.rb
|
1388
1396
|
- lib/puppet/vendor/require_vendored.rb
|
1389
1397
|
- lib/puppet/version.rb
|
1398
|
+
- lib/puppet/x509.rb
|
1399
|
+
- lib/puppet/x509/cert_provider.rb
|
1400
|
+
- lib/puppet/x509/pem_store.rb
|
1390
1401
|
- lib/puppet_pal.rb
|
1391
1402
|
- lib/puppet_x.rb
|
1392
1403
|
- locales/config.yaml
|
@@ -1451,6 +1462,28 @@ files:
|
|
1451
1462
|
- spec/fixtures/releases/jamtur01-apache/tests/php.pp
|
1452
1463
|
- spec/fixtures/releases/jamtur01-apache/tests/ssl.pp
|
1453
1464
|
- spec/fixtures/releases/jamtur01-apache/tests/vhost.pp
|
1465
|
+
- spec/fixtures/ssl/127.0.0.1-key.pem
|
1466
|
+
- spec/fixtures/ssl/127.0.0.1.pem
|
1467
|
+
- spec/fixtures/ssl/bad-basic-constraints.pem
|
1468
|
+
- spec/fixtures/ssl/bad-int-basic-constraints.pem
|
1469
|
+
- spec/fixtures/ssl/ca.pem
|
1470
|
+
- spec/fixtures/ssl/crl.pem
|
1471
|
+
- spec/fixtures/ssl/encrypted-key.pem
|
1472
|
+
- spec/fixtures/ssl/intermediate-agent-crl.pem
|
1473
|
+
- spec/fixtures/ssl/intermediate-agent.pem
|
1474
|
+
- spec/fixtures/ssl/intermediate-crl.pem
|
1475
|
+
- spec/fixtures/ssl/intermediate.pem
|
1476
|
+
- spec/fixtures/ssl/netlock-arany-utf8.pem
|
1477
|
+
- spec/fixtures/ssl/pluto-key.pem
|
1478
|
+
- spec/fixtures/ssl/pluto.pem
|
1479
|
+
- spec/fixtures/ssl/request-key.pem
|
1480
|
+
- spec/fixtures/ssl/request.pem
|
1481
|
+
- spec/fixtures/ssl/revoked-key.pem
|
1482
|
+
- spec/fixtures/ssl/revoked.pem
|
1483
|
+
- spec/fixtures/ssl/signed-key.pem
|
1484
|
+
- spec/fixtures/ssl/signed.pem
|
1485
|
+
- spec/fixtures/ssl/tampered-cert.pem
|
1486
|
+
- spec/fixtures/ssl/tampered-csr.pem
|
1454
1487
|
- spec/fixtures/stdlib.tgz
|
1455
1488
|
- spec/fixtures/unit/application/environments/production/data/common.yaml
|
1456
1489
|
- spec/fixtures/unit/application/environments/production/environment.conf
|
@@ -1810,6 +1843,7 @@ files:
|
|
1810
1843
|
- spec/integration/network/authconfig_spec.rb
|
1811
1844
|
- spec/integration/network/formats_spec.rb
|
1812
1845
|
- spec/integration/network/http/api/indirected_routes_spec.rb
|
1846
|
+
- spec/integration/network/http_pool_spec.rb
|
1813
1847
|
- spec/integration/node/environment_spec.rb
|
1814
1848
|
- spec/integration/node/facts_spec.rb
|
1815
1849
|
- spec/integration/node_spec.rb
|
@@ -1827,6 +1861,7 @@ files:
|
|
1827
1861
|
- spec/integration/parser/scope_spec.rb
|
1828
1862
|
- spec/integration/parser/script_compiler_spec.rb
|
1829
1863
|
- spec/integration/parser/undef_param_spec.rb
|
1864
|
+
- spec/integration/provider/file/windows_spec.rb
|
1830
1865
|
- spec/integration/provider/service/init_spec.rb
|
1831
1866
|
- spec/integration/provider/service/systemd_spec.rb
|
1832
1867
|
- spec/integration/provider/service/windows_spec.rb
|
@@ -1834,6 +1869,7 @@ files:
|
|
1834
1869
|
- spec/integration/reports_spec.rb
|
1835
1870
|
- spec/integration/resource/catalog_spec.rb
|
1836
1871
|
- spec/integration/resource/type_collection_spec.rb
|
1872
|
+
- spec/integration/rest/client_spec.rb
|
1837
1873
|
- spec/integration/ssl/certificate_request_spec.rb
|
1838
1874
|
- spec/integration/ssl/host_spec.rb
|
1839
1875
|
- spec/integration/ssl/key_spec.rb
|
@@ -1882,6 +1918,7 @@ files:
|
|
1882
1918
|
- spec/lib/puppet_spec/files.rb
|
1883
1919
|
- spec/lib/puppet_spec/fixtures.rb
|
1884
1920
|
- spec/lib/puppet_spec/handler.rb
|
1921
|
+
- spec/lib/puppet_spec/https.rb
|
1885
1922
|
- spec/lib/puppet_spec/language.rb
|
1886
1923
|
- spec/lib/puppet_spec/matchers.rb
|
1887
1924
|
- spec/lib/puppet_spec/module_tool/shared_functions.rb
|
@@ -2472,7 +2509,10 @@ files:
|
|
2472
2509
|
- spec/unit/ssl/host_spec.rb
|
2473
2510
|
- spec/unit/ssl/key_spec.rb
|
2474
2511
|
- spec/unit/ssl/oids_spec.rb
|
2512
|
+
- spec/unit/ssl/ssl_provider_spec.rb
|
2513
|
+
- spec/unit/ssl/state_machine_spec.rb
|
2475
2514
|
- spec/unit/ssl/validator_spec.rb
|
2515
|
+
- spec/unit/ssl/verifier_spec.rb
|
2476
2516
|
- spec/unit/status_spec.rb
|
2477
2517
|
- spec/unit/task_spec.rb
|
2478
2518
|
- spec/unit/transaction/additional_resource_generator_spec.rb
|
@@ -2587,10 +2627,13 @@ files:
|
|
2587
2627
|
- spec/unit/util/yaml_spec.rb
|
2588
2628
|
- spec/unit/util_spec.rb
|
2589
2629
|
- spec/unit/version_spec.rb
|
2630
|
+
- spec/unit/x509/cert_provider_spec.rb
|
2631
|
+
- spec/unit/x509/pem_store_spec.rb
|
2590
2632
|
- tasks/benchmark.rake
|
2591
2633
|
- tasks/cfpropertylist.rake
|
2592
2634
|
- tasks/ci.rake
|
2593
2635
|
- tasks/generate_ast_model.rake
|
2636
|
+
- tasks/generate_cert_fixtures.rake
|
2594
2637
|
- tasks/manpages.rake
|
2595
2638
|
- tasks/memwalk.rake
|
2596
2639
|
- tasks/parallel.rake
|
@@ -2657,6 +2700,28 @@ test_files:
|
|
2657
2700
|
- spec/fixtures/releases/jamtur01-apache/tests/php.pp
|
2658
2701
|
- spec/fixtures/releases/jamtur01-apache/tests/ssl.pp
|
2659
2702
|
- spec/fixtures/releases/jamtur01-apache/tests/vhost.pp
|
2703
|
+
- spec/fixtures/ssl/127.0.0.1-key.pem
|
2704
|
+
- spec/fixtures/ssl/127.0.0.1.pem
|
2705
|
+
- spec/fixtures/ssl/bad-basic-constraints.pem
|
2706
|
+
- spec/fixtures/ssl/bad-int-basic-constraints.pem
|
2707
|
+
- spec/fixtures/ssl/ca.pem
|
2708
|
+
- spec/fixtures/ssl/crl.pem
|
2709
|
+
- spec/fixtures/ssl/encrypted-key.pem
|
2710
|
+
- spec/fixtures/ssl/intermediate-agent-crl.pem
|
2711
|
+
- spec/fixtures/ssl/intermediate-agent.pem
|
2712
|
+
- spec/fixtures/ssl/intermediate-crl.pem
|
2713
|
+
- spec/fixtures/ssl/intermediate.pem
|
2714
|
+
- spec/fixtures/ssl/netlock-arany-utf8.pem
|
2715
|
+
- spec/fixtures/ssl/pluto-key.pem
|
2716
|
+
- spec/fixtures/ssl/pluto.pem
|
2717
|
+
- spec/fixtures/ssl/request-key.pem
|
2718
|
+
- spec/fixtures/ssl/request.pem
|
2719
|
+
- spec/fixtures/ssl/revoked-key.pem
|
2720
|
+
- spec/fixtures/ssl/revoked.pem
|
2721
|
+
- spec/fixtures/ssl/signed-key.pem
|
2722
|
+
- spec/fixtures/ssl/signed.pem
|
2723
|
+
- spec/fixtures/ssl/tampered-cert.pem
|
2724
|
+
- spec/fixtures/ssl/tampered-csr.pem
|
2660
2725
|
- spec/fixtures/stdlib.tgz
|
2661
2726
|
- spec/fixtures/unit/application/environments/production/data/common.yaml
|
2662
2727
|
- spec/fixtures/unit/application/environments/production/environment.conf
|
@@ -3016,6 +3081,7 @@ test_files:
|
|
3016
3081
|
- spec/integration/network/authconfig_spec.rb
|
3017
3082
|
- spec/integration/network/formats_spec.rb
|
3018
3083
|
- spec/integration/network/http/api/indirected_routes_spec.rb
|
3084
|
+
- spec/integration/network/http_pool_spec.rb
|
3019
3085
|
- spec/integration/node/environment_spec.rb
|
3020
3086
|
- spec/integration/node/facts_spec.rb
|
3021
3087
|
- spec/integration/node_spec.rb
|
@@ -3033,6 +3099,7 @@ test_files:
|
|
3033
3099
|
- spec/integration/parser/scope_spec.rb
|
3034
3100
|
- spec/integration/parser/script_compiler_spec.rb
|
3035
3101
|
- spec/integration/parser/undef_param_spec.rb
|
3102
|
+
- spec/integration/provider/file/windows_spec.rb
|
3036
3103
|
- spec/integration/provider/service/init_spec.rb
|
3037
3104
|
- spec/integration/provider/service/systemd_spec.rb
|
3038
3105
|
- spec/integration/provider/service/windows_spec.rb
|
@@ -3040,6 +3107,7 @@ test_files:
|
|
3040
3107
|
- spec/integration/reports_spec.rb
|
3041
3108
|
- spec/integration/resource/catalog_spec.rb
|
3042
3109
|
- spec/integration/resource/type_collection_spec.rb
|
3110
|
+
- spec/integration/rest/client_spec.rb
|
3043
3111
|
- spec/integration/ssl/certificate_request_spec.rb
|
3044
3112
|
- spec/integration/ssl/host_spec.rb
|
3045
3113
|
- spec/integration/ssl/key_spec.rb
|
@@ -3088,6 +3156,7 @@ test_files:
|
|
3088
3156
|
- spec/lib/puppet_spec/files.rb
|
3089
3157
|
- spec/lib/puppet_spec/fixtures.rb
|
3090
3158
|
- spec/lib/puppet_spec/handler.rb
|
3159
|
+
- spec/lib/puppet_spec/https.rb
|
3091
3160
|
- spec/lib/puppet_spec/language.rb
|
3092
3161
|
- spec/lib/puppet_spec/matchers.rb
|
3093
3162
|
- spec/lib/puppet_spec/module_tool/shared_functions.rb
|
@@ -3678,7 +3747,10 @@ test_files:
|
|
3678
3747
|
- spec/unit/ssl/host_spec.rb
|
3679
3748
|
- spec/unit/ssl/key_spec.rb
|
3680
3749
|
- spec/unit/ssl/oids_spec.rb
|
3750
|
+
- spec/unit/ssl/ssl_provider_spec.rb
|
3751
|
+
- spec/unit/ssl/state_machine_spec.rb
|
3681
3752
|
- spec/unit/ssl/validator_spec.rb
|
3753
|
+
- spec/unit/ssl/verifier_spec.rb
|
3682
3754
|
- spec/unit/status_spec.rb
|
3683
3755
|
- spec/unit/task_spec.rb
|
3684
3756
|
- spec/unit/transaction/additional_resource_generator_spec.rb
|
@@ -3793,3 +3865,5 @@ test_files:
|
|
3793
3865
|
- spec/unit/util/yaml_spec.rb
|
3794
3866
|
- spec/unit/util_spec.rb
|
3795
3867
|
- spec/unit/version_spec.rb
|
3868
|
+
- spec/unit/x509/cert_provider_spec.rb
|
3869
|
+
- spec/unit/x509/pem_store_spec.rb
|