sensu-plugins-ssl 1.4.0 → 1.5.0
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/CHANGELOG.md +16 -2
- data/README.md +2 -0
- data/bin/check-java-keystore-cert.rb +2 -2
- data/bin/check-ssl-hsts-preloadable.rb +79 -0
- data/bin/check-ssl-hsts-status.rb +101 -0
- data/lib/sensu-plugins-ssl/version.rb +1 -1
- metadata +7 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 7e23f7f9bda17a902a794ba2b392db1fab95bc18
         | 
| 4 | 
            +
              data.tar.gz: dcfb2876610019130353b96e5eeee56ce760b7bf
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 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  | 
| 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. | 
| 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
    
    
| @@ -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 - | 
| 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:
         | 
    
        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 | 
            +
              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- | 
| 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. | 
| 223 | 
            +
            rubygems_version: 2.6.13
         | 
| 220 224 | 
             
            signing_key: 
         | 
| 221 225 | 
             
            specification_version: 4
         | 
| 222 226 | 
             
            summary: Sensu plugins for SSL
         |