fluent-plugin-syslog-tls 1.2.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +8 -0
- data/Gemfile.lock +30 -30
- data/docs/configuration.md +6 -1
- data/fluent-plugin-syslog-tls.gemspec +3 -3
- data/lib/fluent/plugin/out_syslog_tls.rb +10 -2
- data/lib/syslog_tls/ssl_transport.rb +8 -3
- data/lib/syslog_tls/version.rb +2 -2
- data/test/fluent/test_out_syslog_tls.rb +3 -1
- metadata +6 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 262868fd779671864af8b5cef830ce93520fead4d2180961594f6fa936eeeb85
|
4
|
+
data.tar.gz: b8268ed11a3bd9f0735894d7ff53593f4a1f505b0ed2cb754d40faab78cecd2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a867380a0f4fec32d2db3a2713b1d0249c0ffbac667517d38163e3215c59c82a1ed1f73c14e78c9ec60a68cc4d93a4b1c36d7fe9f90a2c73d13d6d7c3429ad51
|
7
|
+
data.tar.gz: 1815edfd8f9faf39328de0c2690f13e95572dfd7d0e34e828562a83dcb1aee3c1890a1950491696ed573c33a33884b80b89cebde473ede9b48ba13e4ef089b66
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
#### 2.0.0
|
2
|
+
|
3
|
+
* Require Ruby 2.4
|
4
|
+
* Support SNI and enable cert name verification by default. **This changes the default behavior** and may cause issues if the remote server's cert does not match the configured hostname.
|
5
|
+
* Add `verify_cert_name` to enable (default) or disable cert name verification.
|
6
|
+
Note: `ca_cert` verifies the certificate signing chain. `verify_cert_name` verifies the CN/SAN name on the cert.
|
7
|
+
|
8
|
+
|
1
9
|
#### 1.2.1
|
2
10
|
|
3
11
|
* Support Fluentd 1.0 (same API as 0.14).
|
data/Gemfile.lock
CHANGED
@@ -1,26 +1,26 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
fluent-plugin-syslog-tls (
|
4
|
+
fluent-plugin-syslog-tls (2.0.0)
|
5
5
|
fluentd (>= 0.14.0, < 2)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
addressable (2.
|
10
|
+
addressable (2.6.0)
|
11
11
|
public_suffix (>= 2.0.2, < 4.0)
|
12
|
-
cool.io (1.5.
|
13
|
-
coveralls (0.8.
|
12
|
+
cool.io (1.5.4)
|
13
|
+
coveralls (0.8.23)
|
14
14
|
json (>= 1.8, < 3)
|
15
|
-
simplecov (~> 0.
|
15
|
+
simplecov (~> 0.16.1)
|
16
16
|
term-ansicolor (~> 1.3)
|
17
|
-
thor (
|
17
|
+
thor (>= 0.19.4, < 2.0)
|
18
18
|
tins (~> 1.6)
|
19
19
|
crack (0.4.3)
|
20
20
|
safe_yaml (~> 1.0.0)
|
21
21
|
dig_rb (1.0.1)
|
22
|
-
docile (1.1
|
23
|
-
fluentd (1.
|
22
|
+
docile (1.3.1)
|
23
|
+
fluentd (1.5.0)
|
24
24
|
cool.io (>= 1.4.5, < 2.0.0)
|
25
25
|
dig_rb (~> 1.0.0)
|
26
26
|
http_parser.rb (>= 0.5.1, < 0.7.0)
|
@@ -31,41 +31,41 @@ GEM
|
|
31
31
|
tzinfo (~> 1.0)
|
32
32
|
tzinfo-data (~> 1.0)
|
33
33
|
yajl-ruby (~> 1.0)
|
34
|
-
hashdiff (0.
|
34
|
+
hashdiff (0.4.0)
|
35
35
|
http_parser.rb (0.6.0)
|
36
|
-
json (2.
|
37
|
-
minitest (5.
|
38
|
-
minitest-stub_any_instance (1.0.
|
39
|
-
msgpack (1.2.
|
40
|
-
power_assert (1.1.
|
41
|
-
public_suffix (3.0
|
42
|
-
rake (12.3.
|
43
|
-
safe_yaml (1.0.
|
44
|
-
serverengine (2.
|
36
|
+
json (2.2.0)
|
37
|
+
minitest (5.11.3)
|
38
|
+
minitest-stub_any_instance (1.0.2)
|
39
|
+
msgpack (1.2.10)
|
40
|
+
power_assert (1.1.4)
|
41
|
+
public_suffix (3.1.0)
|
42
|
+
rake (12.3.2)
|
43
|
+
safe_yaml (1.0.5)
|
44
|
+
serverengine (2.1.1)
|
45
45
|
sigdump (~> 0.2.2)
|
46
46
|
sigdump (0.2.4)
|
47
|
-
simplecov (0.
|
48
|
-
docile (~> 1.1
|
47
|
+
simplecov (0.16.1)
|
48
|
+
docile (~> 1.1)
|
49
49
|
json (>= 1.8, < 3)
|
50
50
|
simplecov-html (~> 0.10.0)
|
51
51
|
simplecov-html (0.10.2)
|
52
52
|
strptime (0.2.3)
|
53
|
-
term-ansicolor (1.
|
53
|
+
term-ansicolor (1.7.1)
|
54
54
|
tins (~> 1.0)
|
55
|
-
test-unit (3.
|
55
|
+
test-unit (3.3.3)
|
56
56
|
power_assert
|
57
|
-
thor (0.
|
57
|
+
thor (0.20.3)
|
58
58
|
thread_safe (0.3.6)
|
59
|
-
tins (1.
|
60
|
-
tzinfo (1.2.
|
59
|
+
tins (1.20.3)
|
60
|
+
tzinfo (1.2.5)
|
61
61
|
thread_safe (~> 0.1)
|
62
|
-
tzinfo-data (1.
|
62
|
+
tzinfo-data (1.2019.1)
|
63
63
|
tzinfo (>= 1.0.0)
|
64
|
-
webmock (
|
64
|
+
webmock (3.5.1)
|
65
65
|
addressable (>= 2.3.6)
|
66
66
|
crack (>= 0.3.2)
|
67
67
|
hashdiff
|
68
|
-
yajl-ruby (1.
|
68
|
+
yajl-ruby (1.4.1)
|
69
69
|
|
70
70
|
PLATFORMS
|
71
71
|
ruby
|
@@ -78,7 +78,7 @@ DEPENDENCIES
|
|
78
78
|
rake
|
79
79
|
simplecov (~> 0.11)
|
80
80
|
test-unit (~> 3.1)
|
81
|
-
webmock (~>
|
81
|
+
webmock (~> 3.0)
|
82
82
|
|
83
83
|
BUNDLED WITH
|
84
|
-
1.
|
84
|
+
1.17.3
|
data/docs/configuration.md
CHANGED
@@ -21,12 +21,16 @@ If a given tag has gone this many seconds between log messages, disconnect and r
|
|
21
21
|
|
22
22
|
### ca_cert
|
23
23
|
|
24
|
-
Whether and how to verify the server's TLS certificate. Examples:
|
24
|
+
Whether and how to verify the server's TLS certificate signing chain. Examples:
|
25
25
|
* ca_cert system - Default; use the system CA certificate store (which must then be configured correctly)
|
26
26
|
* ca_cert false - Disable verification; not recommended
|
27
27
|
* ca_cert /path/to/file - A path+filename to a single CA file
|
28
28
|
* ca_cert /path/to/dir/ - A directory of CA files (in format that OpenSSL can parse); must end with /
|
29
29
|
|
30
|
+
### verify_cert_name
|
31
|
+
|
32
|
+
Whether to verify that the server's cert matches `host`. Enabled by default (except when `ca_cert false`). Recommended; helps prevent MitM attacks. Example: `true`
|
33
|
+
|
30
34
|
### token
|
31
35
|
|
32
36
|
Some services require a token to identify the account. Example: `ABABABABABABA@99999`. Not required for Papertrail.
|
@@ -114,6 +118,7 @@ Optionally record key where to get msgid from the record. If not provided nil va
|
|
114
118
|
token [token]@[iana-id]
|
115
119
|
client_cert /path/to/cert/file.crt
|
116
120
|
client_key /path/to/key/file.key
|
121
|
+
verify_cert_name true
|
117
122
|
|
118
123
|
hostname static-hostname
|
119
124
|
facility SYSLOG
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Copyright 2016 Acquia, Inc.
|
2
|
-
# Copyright 2016-
|
2
|
+
# Copyright 2016-2019 t.e.morgan.
|
3
3
|
#
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
5
|
# you may not use this file except in compliance with the License.
|
@@ -30,7 +30,7 @@ Gem::Specification.new do |s|
|
|
30
30
|
s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
31
31
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
32
32
|
s.require_paths = ['lib']
|
33
|
-
s.required_ruby_version = '>= 2.
|
33
|
+
s.required_ruby_version = '>= 2.4'
|
34
34
|
|
35
35
|
s.add_runtime_dependency 'fluentd', [">= 0.14.0", "< 2"]
|
36
36
|
|
@@ -38,6 +38,6 @@ Gem::Specification.new do |s|
|
|
38
38
|
s.add_development_dependency 'minitest-stub_any_instance', '~> 1.0.0'
|
39
39
|
s.add_development_dependency 'rake'
|
40
40
|
s.add_development_dependency 'test-unit', '~> 3.1'
|
41
|
-
s.add_development_dependency 'webmock', '~>
|
41
|
+
s.add_development_dependency 'webmock', '~> 3.0'
|
42
42
|
s.add_development_dependency 'simplecov', '~> 0.11'
|
43
43
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Copyright 2016 Acquia, Inc.
|
2
|
-
# Copyright 2016 t.e.morgan.
|
2
|
+
# Copyright 2016-2019 t.e.morgan.
|
3
3
|
#
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
5
|
# you may not use this file except in compliance with the License.
|
@@ -29,6 +29,7 @@ module Fluent::Plugin
|
|
29
29
|
config_param :port, :integer
|
30
30
|
config_param :idle_timeout, :integer, default: nil
|
31
31
|
config_param :ca_cert, :string, default: 'system'
|
32
|
+
config_param :verify_cert_name, :bool, default: true
|
32
33
|
config_param :token, :string, default: nil
|
33
34
|
config_param :client_cert, :string, default: nil
|
34
35
|
config_param :client_key, :string, default: nil
|
@@ -98,7 +99,14 @@ module Fluent::Plugin
|
|
98
99
|
end
|
99
100
|
|
100
101
|
def new_logger(tag)
|
101
|
-
transport = ::SyslogTls::SSLTransport.new(host, port,
|
102
|
+
transport = ::SyslogTls::SSLTransport.new(host, port,
|
103
|
+
idle_timeout: idle_timeout,
|
104
|
+
ca_cert: ca_cert,
|
105
|
+
client_cert: client_cert,
|
106
|
+
client_key: client_key,
|
107
|
+
verify_cert_name: verify_cert_name,
|
108
|
+
max_retries: 3,
|
109
|
+
)
|
102
110
|
logger = ::SyslogTls::Logger.new(transport, token)
|
103
111
|
logger.facility(facility)
|
104
112
|
logger.hostname(hostname)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Copyright 2016 Acquia, Inc.
|
2
|
-
# Copyright 2016 t.e.morgan.
|
2
|
+
# Copyright 2016-2019 t.e.morgan.
|
3
3
|
#
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
5
|
# you may not use this file except in compliance with the License.
|
@@ -25,17 +25,18 @@ module SyslogTls
|
|
25
25
|
|
26
26
|
attr_accessor :socket
|
27
27
|
|
28
|
-
attr_reader :host, :port, :idle_timeout, :ca_cert, :client_cert, :client_key, :ssl_version
|
28
|
+
attr_reader :host, :port, :idle_timeout, :ca_cert, :client_cert, :client_key, :verify_cert_name, :ssl_version
|
29
29
|
|
30
30
|
attr_writer :retries
|
31
31
|
|
32
|
-
def initialize(host, port, idle_timeout: nil, ca_cert: 'system', client_cert: nil, client_key: nil, ssl_version: :TLSv1_2, max_retries: 1)
|
32
|
+
def initialize(host, port, idle_timeout: nil, ca_cert: 'system', client_cert: nil, client_key: nil, verify_cert_name: true, ssl_version: :TLSv1_2, max_retries: 1)
|
33
33
|
@host = host
|
34
34
|
@port = port
|
35
35
|
@idle_timeout = idle_timeout
|
36
36
|
@ca_cert = ca_cert
|
37
37
|
@client_cert = client_cert
|
38
38
|
@client_key = client_key
|
39
|
+
@verify_cert_name = verify_cert_name
|
39
40
|
@ssl_version = ssl_version
|
40
41
|
@retries = max_retries
|
41
42
|
connect
|
@@ -97,12 +98,15 @@ module SyslogTls
|
|
97
98
|
ctx.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
98
99
|
ctx.ssl_version = ssl_version
|
99
100
|
|
101
|
+
ctx.verify_hostname = verify_cert_name != false
|
102
|
+
|
100
103
|
case ca_cert
|
101
104
|
when true, 'true', 'system'
|
102
105
|
# use system certs, same as openssl cli
|
103
106
|
ctx.cert_store = OpenSSL::X509::Store.new
|
104
107
|
ctx.cert_store.set_default_paths
|
105
108
|
when false, 'false'
|
109
|
+
ctx.verify_hostname = false
|
106
110
|
ctx.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
107
111
|
when %r{/$} # ends in /
|
108
112
|
ctx.ca_path = ca_cert
|
@@ -113,6 +117,7 @@ module SyslogTls
|
|
113
117
|
ctx.cert = OpenSSL::X509::Certificate.new(File.read(client_cert)) if client_cert
|
114
118
|
ctx.key = OpenSSL::PKey::read(File.read(client_key)) if client_key
|
115
119
|
socket = OpenSSL::SSL::SSLSocket.new(tcp, ctx)
|
120
|
+
socket.hostname = host
|
116
121
|
socket.sync_close = true
|
117
122
|
socket
|
118
123
|
end
|
data/lib/syslog_tls/version.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Copyright 2016 Acquia, Inc.
|
2
|
-
# Copyright 2016-
|
2
|
+
# Copyright 2016-2019 t.e.morgan.
|
3
3
|
#
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
5
|
# you may not use this file except in compliance with the License.
|
@@ -14,5 +14,5 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
|
16
16
|
module SyslogTls
|
17
|
-
VERSION = '
|
17
|
+
VERSION = '2.0.0'
|
18
18
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Copyright 2016 Acquia, Inc.
|
2
|
-
# Copyright 2016 t.e.morgan.
|
2
|
+
# Copyright 2016-2019 t.e.morgan.
|
3
3
|
#
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
5
|
# you may not use this file except in compliance with the License.
|
@@ -55,6 +55,7 @@ class SyslogTlsOutputTest < Test::Unit::TestCase
|
|
55
55
|
port 6514
|
56
56
|
client_cert
|
57
57
|
client_key
|
58
|
+
verify_cert_name true
|
58
59
|
token 1234567890
|
59
60
|
}
|
60
61
|
instance = driver(config).instance
|
@@ -63,6 +64,7 @@ class SyslogTlsOutputTest < Test::Unit::TestCase
|
|
63
64
|
assert_equal '6514', instance.port
|
64
65
|
assert_equal '', instance.client_cert
|
65
66
|
assert_equal '', instance.client_key
|
67
|
+
assert_equal true, instance.verify_cert_name
|
66
68
|
assert_equal '1234567890', instance.token
|
67
69
|
end
|
68
70
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-syslog-tls
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- thomas morgan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-06-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -92,14 +92,14 @@ dependencies:
|
|
92
92
|
requirements:
|
93
93
|
- - "~>"
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: '
|
95
|
+
version: '3.0'
|
96
96
|
type: :development
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
100
|
- - "~>"
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: '
|
102
|
+
version: '3.0'
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: simplecov
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -158,15 +158,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
158
158
|
requirements:
|
159
159
|
- - ">="
|
160
160
|
- !ruby/object:Gem::Version
|
161
|
-
version: 2.
|
161
|
+
version: '2.4'
|
162
162
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
164
|
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
167
|
requirements: []
|
168
|
-
|
169
|
-
rubygems_version: 2.6.13
|
168
|
+
rubygems_version: 3.0.3
|
170
169
|
signing_key:
|
171
170
|
specification_version: 4
|
172
171
|
summary: Fluent Syslog TLS output plugin
|