sensu-plugins-ssl 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4bb08666a55b083ef5b2e8c252152420e943da99
4
- data.tar.gz: c32e3f6fd49c1436073833748c619c571f7d0947
3
+ metadata.gz: 7e23f7f9bda17a902a794ba2b392db1fab95bc18
4
+ data.tar.gz: dcfb2876610019130353b96e5eeee56ce760b7bf
5
5
  SHA512:
6
- metadata.gz: 7999f8f52dd451240c33c68c3f8d5ed1b9c2e7fe6777b7462cde2d3aedf7f290121c2761233a48e67205929b26a1a5a25fa2dbde8b0b5e34338059bf78dca699
7
- data.tar.gz: f1e7d24517dcae4ab6ad0098e951a9bed7ab8cdfab4b71f90db73c4c0965595bc3016161a962bc5e865a1736cffb60d45191eed9b06354bf5dbd4b6f6901e311
6
+ metadata.gz: 055dd188beb7356eb2c10edfab2db5432343910d4548a6ab4f911860bd27d93814b8e896ea02a54d240c265140ded0edf1209433f1d49c30ad1c45f6f78af200
7
+ data.tar.gz: 9724710d3b54fb0d20538232cefb3992fa1ef7c707489c4cb6bc15de62a9e098cebb983016396344ee6ca6781af5a87f647ba76e9d6dcee92786ee3041422593
data/CHANGELOG.md CHANGED
@@ -1,10 +1,23 @@
1
1
  # Change Log
2
2
  This project adheres to [Semantic Versioning](http://semver.org/).
3
3
 
4
- This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
4
+ This CHANGELOG follows the format listed [here](https://github.com/sensu-plugins/community/blob/master/HOW_WE_CHANGELOG.md).
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [1.5.0] - 2017-09-26
9
+ ### Added
10
+ - Ruby 2.4.1 testing
11
+ - `check-ssl-hsts-preload.rb`: Added check for testing preload status of HSTS (@rwky)
12
+ - `check-ssl-hsts-preloadable.rb`: Added check for testing if a domain can be HSTS preloaded (@rwky)
13
+
14
+ ### Changed
15
+ - updated CHANGELOG guidelines location (@majormoses)
16
+
17
+ ### Fixed
18
+ - `check-java-keystore-cert.rb`: Export cert in PEM format to fix tests that broke going from Precise to Trusty travis workers (@eheydrick)
19
+ - fixed spelling in github pr template (@majormoses)
20
+
8
21
  ## [1.4.0] - 2017-06-20
9
22
  ### Added
10
23
  - `check-ssl-anchor.rb`: Add check for a specific root certificate signature. (@pgporada)
@@ -78,7 +91,8 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
78
91
  ### Added
79
92
  - initial release
80
93
 
81
- [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-ssl/compare/1.4.0...HEAD
94
+ [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-ssl/compare/1.5.0...HEAD
95
+ [1.5.0]: https://github.com/sensu-plugins/sensu-plugins-ssl/compare/1.4.0...1.5.0
82
96
  [1.4.0]: https://github.com/sensu-plugins/sensu-plugins-ssl/compare/1.3.1...1.4.0
83
97
  [1.3.1]: https://github.com/sensu-plugins/sensu-plugins-ssl/compare/1.3.0...1.3.1
84
98
  [1.3.0]: https://github.com/sensu-plugins/sensu-plugins-ssl/compare/1.2.0...1.3.0
data/README.md CHANGED
@@ -14,6 +14,8 @@
14
14
  * bin/check-ssl-crl.rb
15
15
  * bin/check-ssl-cert.rb
16
16
  * bin/check-ssl-host.rb
17
+ * bin/check-ssl-hsts-preload.rb
18
+ * bin/check-ssl-hsts-preloadable.rb
17
19
  * bin/check-ssl-qualys.rb
18
20
 
19
21
  ## Usage
@@ -56,8 +56,8 @@ class CheckJavaKeystoreCert < Sensu::Plugin::Check::CLI
56
56
  def certificate_expiration_date
57
57
  result = `keytool -keystore #{Shellwords.escape(config[:path])} \
58
58
  -export -alias #{Shellwords.escape(config[:alias])} \
59
- -storepass #{Shellwords.escape(config[:password])} 2>&1 | \
60
- openssl x509 -enddate -inform der -noout 2>&1`
59
+ -storepass #{Shellwords.escape(config[:password])} -rfc 2>&1 | \
60
+ openssl x509 -enddate -noout 2>&1`
61
61
 
62
62
  # rubocop:disable Style/SpecialGlobalVars
63
63
  unknown 'could not get certificate from keystore' unless $?.success?
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+ # check-ssl-hsts-preloadable.rb
4
+ #
5
+ # DESCRIPTION:
6
+ # Checks a domain against the chromium HSTS API returning errors/warnings if the domain is preloadable
7
+ #
8
+ # OUTPUT:
9
+ # plain text
10
+ #
11
+ # PLATFORMS:
12
+ # Linux
13
+ #
14
+ # DEPENDENCIES:
15
+ # gem: sensu-plugin
16
+ #
17
+ # USAGE:
18
+ # # Basic usage
19
+ # check-ssl-hsts-preloadable.rb -d <domain_name>
20
+ #
21
+ # LICENSE:
22
+ # Copyright 2017 Rowan Wookey <admin@rwky.net>
23
+ # Released under the same terms as Sensu (the MIT license); see LICENSE for
24
+ # details.
25
+ #
26
+ # Inspired by https://github.com/sensu-plugins/sensu-plugins-ssl/blob/master/bin/check-ssl-qualys.rb Copyright 2015 William Cooke <will@bruisyard.eu>
27
+ #
28
+
29
+ require 'sensu-plugin/check/cli'
30
+ require 'json'
31
+ require 'net/http'
32
+
33
+ class CheckSSLHSTSPreloadable < Sensu::Plugin::Check::CLI
34
+ option :domain,
35
+ description: 'The domain to run the test against',
36
+ short: '-d DOMAIN',
37
+ long: '--domain DOMAIN',
38
+ required: true
39
+
40
+ option :api_url,
41
+ description: 'The URL of the API to run against',
42
+ long: '--api-url URL',
43
+ default: 'https://hstspreload.org/api/v2/preloadable'
44
+
45
+ def fetch(uri, limit = 10)
46
+ if limit == 0
47
+ return nil
48
+ end
49
+
50
+ response = Net::HTTP.get_response(uri)
51
+
52
+ case response
53
+ when Net::HTTPSuccess then
54
+ response
55
+ when Net::HTTPRedirection then
56
+ location = URI(response['location'])
57
+ fetch(location, limit - 1)
58
+ end
59
+ end
60
+
61
+ def run
62
+ uri = URI(config[:api_url])
63
+ uri.query = URI.encode_www_form(domain: config[:domain])
64
+ response = fetch(uri)
65
+ if response.nil?
66
+ return warning 'Bad response recieved from API'
67
+ end
68
+ body = JSON.parse(response.body)
69
+ if !body['errors'].empty?
70
+ critical body['errors'].map { |u| u['summary'] }.join(', ')
71
+ elsif !body['warnings'].empty?
72
+ warning body['warnings'].map { |u| u['summary'] }.join(', ')
73
+ else
74
+ ok
75
+ end
76
+ end
77
+ end
78
+
79
+ # vim: set tabstop=2 shiftwidth=2 expandtab:
@@ -0,0 +1,101 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+ # check-ssl-hsts-preload.rb
4
+ #
5
+ # DESCRIPTION:
6
+ # Checks a domain against the chromium HSTS API reporting on the preload status of the domain
7
+ #
8
+ # OUTPUT:
9
+ # plain text
10
+ #
11
+ # PLATFORMS:
12
+ # Linux
13
+ #
14
+ # DEPENDENCIES:
15
+ # gem: sensu-plugin
16
+ #
17
+ # USAGE:
18
+ # # Basic usage
19
+ # check-ssl-hsts-preload.rb -d <domain_name>
20
+ # # Specify the CRITICAL and WARNING alerts to either unknown (not in the database), pending or preloaded
21
+ # check-ssl-hsts-preload.rb -d <domain_name> -c <critical_alert> -w <warning_alert>
22
+ #
23
+ # LICENSE:
24
+ # Copyright 2017 Rowan Wookey <admin@rwky.net>
25
+ # Released under the same terms as Sensu (the MIT license); see LICENSE for
26
+ # details.
27
+ #
28
+ # Inspired by https://github.com/sensu-plugins/sensu-plugins-ssl/blob/master/bin/check-ssl-qualys.rb Copyright 2015 William Cooke <will@bruisyard.eu>
29
+ #
30
+
31
+ require 'sensu-plugin/check/cli'
32
+ require 'json'
33
+ require 'net/http'
34
+
35
+ class CheckSSLHSTSStatus < Sensu::Plugin::Check::CLI
36
+ STATUSES = %w(unknown pending preloaded).freeze
37
+
38
+ option :domain,
39
+ description: 'The domain to run the test against',
40
+ short: '-d DOMAIN',
41
+ long: '--domain DOMAIN',
42
+ required: true
43
+
44
+ option :warn,
45
+ short: '-w STATUS',
46
+ long: '--warn STATUS',
47
+ description: 'WARNING if this status or worse',
48
+ in: STATUSES,
49
+ default: 'pending'
50
+
51
+ option :critical,
52
+ short: '-c STATUS',
53
+ long: '--critical STATUS',
54
+ description: 'CRITICAL if this status or worse',
55
+ in: STATUSES,
56
+ default: 'unknown'
57
+
58
+ option :api_url,
59
+ description: 'The URL of the API to run against',
60
+ long: '--api-url URL',
61
+ default: 'https://hstspreload.org/api/v2/status'
62
+
63
+ def fetch(uri, limit = 10)
64
+ if limit == 0
65
+ return nil
66
+ end
67
+
68
+ response = Net::HTTP.get_response(uri)
69
+
70
+ case response
71
+ when Net::HTTPSuccess then
72
+ response
73
+ when Net::HTTPRedirection then
74
+ location = URI(response['location'])
75
+ fetch(location, limit - 1)
76
+ end
77
+ end
78
+
79
+ def run
80
+ uri = URI(config[:api_url])
81
+ uri.query = URI.encode_www_form(domain: config[:domain])
82
+ response = fetch(uri)
83
+ if response.nil?
84
+ return warning 'Bad response recieved from API'
85
+ end
86
+ body = JSON.parse(response.body)
87
+ unless STATUSES.include? body['status']
88
+ warning 'Invalid status returned ' + body['status']
89
+ end
90
+
91
+ if STATUSES.index(body['status']) <= STATUSES.index(config[:critical])
92
+ critical body['status']
93
+ elsif STATUSES.index(body['status']) <= STATUSES.index(config[:warn])
94
+ warning body['status']
95
+ else
96
+ ok
97
+ end
98
+ end
99
+ end
100
+
101
+ # vim: set tabstop=2 shiftwidth=2 expandtab:
@@ -1,7 +1,7 @@
1
1
  module SensuPluginsSSL
2
2
  module Version
3
3
  MAJOR = 1
4
- MINOR = 4
4
+ MINOR = 5
5
5
  PATCH = 0
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-ssl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sensu-Plugins and contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-21 00:00:00.000000000 Z
11
+ date: 2017-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sensu-plugin
@@ -175,6 +175,8 @@ executables:
175
175
  - check-ssl-cert.rb
176
176
  - check-ssl-crl.rb
177
177
  - check-ssl-host.rb
178
+ - check-ssl-hsts-preloadable.rb
179
+ - check-ssl-hsts-status.rb
178
180
  - check-ssl-qualys.rb
179
181
  extensions: []
180
182
  extra_rdoc_files: []
@@ -187,6 +189,8 @@ files:
187
189
  - bin/check-ssl-cert.rb
188
190
  - bin/check-ssl-crl.rb
189
191
  - bin/check-ssl-host.rb
192
+ - bin/check-ssl-hsts-preloadable.rb
193
+ - bin/check-ssl-hsts-status.rb
190
194
  - bin/check-ssl-qualys.rb
191
195
  - lib/sensu-plugins-ssl.rb
192
196
  - lib/sensu-plugins-ssl/version.rb
@@ -216,7 +220,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
216
220
  version: '0'
217
221
  requirements: []
218
222
  rubyforge_project:
219
- rubygems_version: 2.4.5
223
+ rubygems_version: 2.6.13
220
224
  signing_key:
221
225
  specification_version: 4
222
226
  summary: Sensu plugins for SSL