Provided by: monitoring-plugins-contrib_42.20230308ubuntu1_amd64 bug

NAME

       check_ssl_cert - checks the validity of X.509 certificates

SYNOPSIS

       check_ssl_cert -H host [OPTIONS]
       check_ssl_cert -f file [OPTIONS]

DESCRIPTION

       check_ssl_cert  A  shell  script  (that can be used as a Nagios/Icinga plugin) to check an
       SSL/TLS connection

ARGUMENTS

       -f,--file file
              Local file path or URI. With -f you can not only pass a x509 certificate  file  but
              also  a  certificate  revocation  list (CRL) to check the validity period or a Java
              KeyStore file

       -H,--host host
              server

OPTIONS

       -A,--noauth
              Ignore authority warnings (expiration only)

           --all
              Enable all the possible optional checks at the maximum level

           --all-local
              Enable all the possible optional checks at the maximum level (without SSL-Labs)

           --allow-empty-san
              Allow certificates without Subject Alternative Names (SANs)

       -C,--clientcert path
              Use client certificate to authenticate

       -c,--critical days
              Minimum number of days a certificate has to be valid to issue  a  critical  status.
              Can be a floating point number, e.g., 0.5. Default: 15

          --check-chain
              The certificate chain cannot contain double or root certificates

          --check-ciphers grade
              Check the offered ciphers

          --check-ciphers-warnings
              Critical if nmap reports a warning for an offered cipher

          --check-http-headers
              Check the HTTP headers for best practices

          --check-ssl-labs-warn grade
              SSL Labs grade on which to warn

          --clientpass phrase
              Set passphrase for client certificate.

          --configuration file
              Read options from the specified file

          --crl
              Check revocation via CRL (requires --rootcert-file)

          --curl-bin path
              Path of the curl binary to be used

          --custom-http-header string
              Custom HTTP header sent when getting the cert example: 'X-Check-Ssl-Cert: Foobar=1'

          --dane
              Verify that valid DANE records exist (since OpenSSL 1.1.0)

          --dane 211
              Verify that a valid DANE-TA(2) SPKI(1) SHA2-256(1) TLSA record exists

          --dane 301
              Verify that a valid DANE-EE(3) Cert(0) SHA2-256(1) TLSA record exists

          --dane 302
              Verify that a valid DANE-EE(3) Cert(0) SHA2-512(2) TLSA record exists

          --dane 311
              Verify that a valid DANE-EE(3) SPKI(1) SHA2-256(1) TLSA record exists

          --dane 312
              Verify that a valid DANE-EE(3) SPKI(1) SHA2-512(1) TLSA record exists

          --date path
              Path of the date binary to be used

       -d,--debug
              Produce debugging output (can be specified more than once)

          --debug-cert
              Store the retrieved certificates in the current directory

          --debug-file file
              Write the debug messages to file

          --debug-headers
              Store the retrieved HTLM headers in the headers.txt file

          --debug-time
              Write timing information in the debugging output

          --default-format
              Print the default output format and exit

          --dig-bin path
              Path of the dig binary to be used

          --dtls
              Use the DTLS protocol

          --dtls1
              Use the DTLS protocol 1.0

          --dtls1_2
              Use the DTLS protocol 1.2

       -e,--email address
              Pattern to match the email address contained in the certificate

          --ecdsa
              Signature algorithm selection: force ECDSA certificate

          --element number
              Check up to the N cert element from the beginning of the chain

          --file-bin path
              Path of the file binary to be used

          --fingerprint SHA1
              Pattern to match the SHA1-Fingerprint

          --first-element-only
              Verify just the first cert element, not the whole chain

          --force-dconv-date
              Force the usage of dconv for date computations

          --force-perl-date
              Force the usage of Perl for date computations

          --format FORMAT
              Format  output  template  on  success,  for  example:  '%SHORTNAME%  OK  %CN%  from
              %CA_ISSUER_MATCHED%'
              List of possible variables:
              - %CA_ISSUER_MATCHED%
              - %CHECKEDNAMES%
              - %CN%
              - %DATE%
              - %DAYS_VALID%
              - %DYSPLAY_CN%
              - %HOST%
              - %OCSP_EXPIRES_IN_HOURS%
              - %OPENSSL_COMMAND%
              - %PORT%
              - %SELFSIGNEDCERT%
              - %SHORTNAME%
              - %SIGALGO%
              - %SSL_LABS_HOST_GRADE%
              See --default-format for the default

          --grep-bin path
              Path of the grep binary to be used

       -h,--help,-?
              This help message

          --http-headers-path path
              The path to be used to fetch HTTP headers

          --http-use-get
              Use GET instead of HEAD (default) for the HTTP related checks

       -i,--issuer issuer
              Pattern to match the issuer of the certificate

         --ignore-altnames
              Ignore alternative names when matching pattern specified in -n (or the host name)

         --ignore-connection-problems [state]
              In case of connection problems returns OK or the optional state

          --ignore-exp
              Ignore expiration date

          --ignore-http-headers
              Ignore checks on HTTP headers with --all and --all-local

          --ignore-host-cn
              Do not complain if the CN does not match the host name

          --ignore-incomplete-chain
              Do not check chain integrity

          --ignore-maximum-validity
              Ignore the certificate maximum validity

          --ignore-ocsp
              Do not check revocation with OCSP

          --ignore-ocsp-errors
              Continue if the OCSP status cannot be checked

          --ignore-ocsp-timeout
              Ignore OCSP result when timeout occurs while checking

          --ignore-sct
              Do not check for signed certificate timestamps (SCT)

          --ignore-sig-alg
              Do not check if the certificate was signed with SHA1 or MD5

          --ignore-ssl-labs-cache
              Force a new check by SSL Labs (see -L)

          --ignore-tls-renegotiation
              Ignore the TLS renegotiation check

          --inetproto protocol
              Force IP version 4 or 6

          --info
              Print certificate information

          --init-host-cache
              Initialize the host cache

          --issuer-cert-cache dir
              Directory where to store issuer certificates cache

          --jks-alias alias
              Alias name of the Java KeyStore entry (requires --file)

       -K,--clientkey path
              Use client certificate key to authenticate

       -L,--check-ssl-labs grade
              SSL  Labs  assessment  (please   check   https://www.ssllabs.com/about/terms.html).
              Critical if the grade is lower than specified.

          --long-output list
              Append  the  specified comma separated (no spaces) list of attributes to the plugin
              output on additional lines.  Valid attributes  are:  enddate,  startdate,  subject,
              issuer,  modulus, serial, hash, email, ocsp_uri and fingerprint. 'all' will include
              all the available attributes.

       -m,--match name
              Pattern to match the CN or AltName (can be specified multiple times)

          --maximum-validity [days]
              The maximum validity of the certificate must not exceed 'days' (default 397).  This
              check is automatic for HTTPS

          --nmap-bin path
              Path of the nmap binary to be used

          --no-perf
              Do not show performance data

          --no-proxy
              Ignore the http_proxy and https_proxy environment variables

          --no-proxy-curl
              Ignore the http_proxy and https_proxy environment variables for curl

          --no-proxy-s_client
              Ignore the http_proxy and https_proxy environment variables for openssl s_client

          --no-ssl2
              Disable SSL version 2

          --no-ssl3
              Disable SSL version 3

          --no-tls1
              Disable TLS version 1

          --no-tls1_1
              Disable TLS version 1.1

          --no-tls1_3
              Disable TLS version 1.3

          --no-tls1_2
              Disable TLS version 1.2

          --not-issued-by issuer
              Check that the issuer of the certificate does not match the given pattern

          --not-valid-longer-than days
              Critical if the certificate validity is longer than the specified period

       -o,--org org
              Pattern to match the organization of the certificate

          --ocsp-critical hours
              Minimum number of hours an OCSP response has to be valid to issue a critical status

           --ocsp-warning hours
              Minimum number of hours an OCSP response has to be valid to issue a warning status

          --openssl path
              Path of the openssl binary to be used

       -p,--port port
              TCP port (default 443)

       --precision digits
              Number  of  decimal  places for durations: defaults to 0 if critical or warning are
              integers, 2 otherwise

       -P,--protocol protocol
              Use the specific protocol: dns, ftp, ftps,  http,  https  (default),  h2  (HTTP/2),
              imap,  imaps,  irc,  ircs,  ldap, ldaps, mysql, pop3, pop3s, postgres, sieve, smtp,
              smtps, tds, xmpp, xmpp-server, ftp, imap, irc, ldap, pop3, postgres,  sieve,  smtp:
              switch  to TLS using StartTLS.   These protocols switch to TLS using StartTLS: ftp,
              imap, irc, ldap, mysql, pop3, smtp.

          --path path
              Set the PATH variable to 'path'

          --password source
              Password source for a local certificate, see  the  PASS  PHRASE  ARGUMENTS  section
              openssl(1)

          --prometheus
              Generate Prometheus/OpenMetrics output

          --proxy proxy
              Set http_proxy and the s_client -proxy option

          --python-bin path
              Path of the python binary to be used

       -q,--quiet
              Do not produce any output

       -r,--rootcert cert
              Root  certificate  or  directory  to  be used for certificate validation (passed to
              openssl's -CAfile or -CApath)

          --require-client-cert [list]
              The server must accept a client certificate. 'list' is an optional comma  separated
              list of expected client certificate CAs

          --require-dnssec
              Require DNSSEC

          --require-http-header header
              Require the specified HTTP header (e.g., X-Frame-Options)

          --require-no-http-header header
              Require the absence of the specified HTTP header (e.g., X-Powered-By)

          --require-no-ssl2
              Critical if SSL version 2 is offered

          --require-no-ssl3
              Critical if SSL version 3 is offered

          --require-no-tls1
              Critical if TLS 1 is offered

          --require-no-tls1_1
              Critical if TLS 1.1 is offered

          --require-ocsp-stapling
              Require OCSP stapling

           --require-purpose usage
              Require the specified key usage (can be specified more then once)

           --require-purpose-critical
              The key usage must be critical

           --require-security-header header
              Require the specified HTTP security header (e.g., X-Frame-Options)

           --require-security-headers
              Require all the HTTP security headers:
                Content-Security-Policy
                Permissions-Policy
                Referrer-Policy
                strict-transport-security
                X-Content-Type-Options
                X-Frame-Options

          --resolve ip
              Provide a custom IP address for the specified host

          --rootcert-dir dir
              Root  directory to be used for certificate validation (passed to openssl's -CApath)
              overrides option -r,--rootcert

          --rootcert-file cert
              Root certificate to  be  used  for  certificate  validation  (passed  to  openssl's
              -CAfile) overrides option -r,--rootcert

          --rsa
              Signature algorithm selection: force RSA certificate

          --security-level number
              Set  the security level to specified value. See SSL_CTX_set_security_level(3) for a
              description of what each level means

       -s,--selfsigned
              Allow self-signed certificates

          --serial serialnum
              Pattern to match the serial number

       --skip-element number
              Skip checks on the Nth cert element (can be specified multiple times)

          --sni name
              Set the TLS SNI (Server Name Indication) extension in the  ClientHello  message  to
              'name'

          --ssl2
              Force SSL version 2

          --ssl3
              Force SSL version 3

       -t,--timeout seconds
              Timeout after the specified time (defaults to 120 seconds)

          --temp dir
              Directory where to store the temporary files

          --terse
              Terse output (also see --verbose)

          --tls1
              Force TLS version 1

          --tls1_1
              Force TLS version 1.1

          --tls1_2
              Force TLS version 1.2

          --tls1_3
              Force TLS version 1.3

       -u,--url URL
              HTTP request URL

          --user-agent string
              User agent that shall be used for HTTPS connections

       -v,--verbose
              Verbose output (can be specified more than once)

       -V,--version
              Version

       -w,--warning days
              Minimum  number  of  days  a certificate has to be valid to issue a warning status.
              Might be a floating point number, e.g., 0.5. Default: 20

          --xmpphost name
              Specify the host for the 'to' attribute of the stream element

       -4     Force IPv4

       -6     Force IPv6

DEPRECATED OPTIONS

          --altnames
              Match the pattern specified in -n with alternate names too (enabled by default)

       -n,--cn name
              Pattern to match the CN or AltName (can be specified multiple times)

          --curl-user-agent string
              User agent that curl shall use to obtain the issuer cert

       -d,--days days
              Minimum number of days a certificate has to be valid (see --critical and --warning)

       -N,--host-cn
              Match CN with the host name (enabled by default)

          --no_ssl2
              Disable SSLv2 (deprecated use --no-ssl2)

          --no_ssl3
              Disable SSLv3 (deprecated use --no-ssl3)

           --no_tls1
              Disable TLSv1 (deprecated use --no-tls1)

          --no_tls1_1
              Disable TLSv1.1 (deprecated use --no-tls1_1)

          --no_tls1_2
              Disable TLSv1.1 (deprecated use --no-tls1_2)

          --no_tls1_3
              Disable TLSv1.1 (deprecated use --no-tls1_3)

          --ocsp
              Check revocation via OCSP (enabled by default)

          --require-hsts
              Require HTTP Strict Transport Security  (deprecated  use  --require-security-header
              strict-transport-security)

           --require-security-headers-path path
              the path to be used to fetch HTTP security headers

          --require-san
              Require the presence of a Subject Alternative Name extension

          --require-x-frame-options [path]
              Require  the  presence  of  the X-Frame-Options HTTP header. 'path' is the optional
              path to be used in the URL to check  for  the  header  (deprecated  use  --require-
              security-header X-Frame-Options and --require-security-headers-path path)

       -S,--ssl version
              Force SSL version (2,3) (see: --ssl2 or --ssl3)

CONFIGURATION

       Command line options can be specified in a configuration file (${HOME}/.check_ssl_certrc).
       For example

         $ cat ${HOME}/.check_ssl_certrc
         --verbose
         --critical 20
         --warning 40

       Options specified in the configuration file are read before processing the  arguments  and
       can be overridden.

NOTES

       If  the  host  has  multiple  certificates  and the installed openssl version supports the
       -servername option it is possible to specify the TLS SNI (Server Name Identificator)  with
       the -N (or --host-cn) option.

EXIT STATUS

       check_ssl_cert  returns a zero exist status if it finds no errors, 1 for warnings, 2 for a
       critical errors and 3 for unknown problems

BUGS

       Please report bugs to: https://github.com/matteocorti/check_ssl_cert/issues

EXAMPLE

       check_ssl_cert --host github.com --all-local

SEE ALSO

       openssl(1), openssl-x509(1)