check_ssl_cert

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

https://github.com/matteocorti/check_ssl_cert

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    6 of 87 committers (6.9%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (8.3%) to scientific vocabulary

Keywords

certificate icinga-plugin icinga2-plugin icinga2-plugins nagios-plugin nagios-plugins openssl shell-script ssl tls

Keywords from Contributors

distribution pentest hacking operating-system cryptocurrencies packaging uml-diagram argument-parser projection ssh-key
Last synced: 4 months ago · JSON representation ·

Repository

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

Basic Info
  • Host: GitHub
  • Owner: matteocorti
  • License: gpl-3.0
  • Language: Shell
  • Default Branch: master
  • Homepage:
  • Size: 5.61 MB
Statistics
  • Stars: 403
  • Watchers: 21
  • Forks: 132
  • Open Issues: 9
  • Releases: 258
Topics
certificate icinga-plugin icinga2-plugin icinga2-plugins nagios-plugin nagios-plugins openssl shell-script ssl tls
Created about 10 years ago · Last pushed 4 months ago
Metadata Files
Readme Changelog Contributing Funding License Code of conduct Citation Security Authors

README.md

check_ssl_cert

© Matteo Corti, ETH Zurich, 2007-2012. © Matteo Corti, 2007-2025.

see AUTHORS.md for the complete list of contributors

     

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

Usage

```text Usage: checksslcert -H host [OPTIONS] checksslcert -f file [OPTIONS]

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) --assume-online Do not check if the port is open -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 --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' --default-format Print the default output format and exit --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-headers Store the retrieved HTLM headers in the headers.txt file --debug-file file Write the debug messages to file --debug-time Write timing information in the debugging output --dig-bin path Path of the dig binary to be used --do-not-resolve Do not check if the host can be resolved --dtls Use the DTLS protocol --dtls1 Use the DTLS protocol 1.0 --dtls12 Use the DTLS protocol 1.2 -e,--email address Pattern (extended regular expression) to match the email address contained in the certificate. You can specify different addresses separated by a pipe (e.g., 'addr1|addr2') --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 hash Pattern to match the fingerprint --fingerprint-alg algorithm Algorithm for fingerprint. Default sha1 --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 %CAISSUERMATCHED%' list of possible variables: - %CAISSUERMATCHED% - %CHECKEDNAMES% - %CN% - %DATE% - %DAYSVALID% - %DYSPLAYCN% - %HOST% - %OCSPEXPIRESINHOURS% - %OPENSSLCOMMAND% - %PORT% - %SELFSIGNEDCERT% - %SHORTNAME% - %SIGALGO% - %SSLLABSHOSTGRADE% 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 (extended regular expression) to match the issuer of the certificate You can specify different issuers separated by a pipe (e.g., 'issuer1|issuer2') --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-crl Ignore CRLs --ignore-dh Ignore too small DH keys --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-ssl-labs-errors Ignore errors if SSL Labs is not accessible or times out --ignore-tls-renegotiation Ignore the TLS renegotiation check --ignore-unexpected-eof Ignore unclean TLS shutdowns --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) --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, ocspuri and fingerprint. 'all' will include all the available attributes. -m,--match 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 --nmap-with-proxy Allow nmap to be used with a proxy --no-perf Do not show performance data --no-proxy Ignore the httpproxy and httpsproxy environment variables --no-proxy-curl Ignore the httpproxy and httpsproxy environment variables for curl --no-proxy-sclient Ignore the httpproxy and httpsproxy environment variables for openssl sclient --no-ssl2 Disable SSL version 2 --no-ssl3 Disable SSL version 3 --no-tls1 Disable TLS version 1 --no-tls11 Disable TLS version 1.1 --no-tls12 Disable TLS version 1.2 --no-tls13 Disable TLS version 1.3 --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 --path path Set the PATH variable to 'path' -p,--port port TCP port number (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), h3 (HTTP/3), imap, imaps, irc, ircs, ldap, ldaps, mqtts, mysql, pop3, pop3s, postgres, sieve, sips, smtp, smtps, tds, xmpp, xmpp-server. ftp, imap, irc, ldap, pop3, postgres, sieve, smtp: switch to TLS using StartTLS --password source Password source for a local certificate, see the PASS PHRASE ARGUMENTS section openssl(1) --prometheus Generate Prometheus/OpenMetrics output --proxy proxy Set httpproxy and the sclient -proxy option --python-bin path Path of the python binary to be used --quic Use QUIC -q,--quiet Do not produce any output -r,--rootcert path Root certificate or directory to be used for certificate validation --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., strict-transport-security) --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-tls11 Critical if TLS 1.1 is offered --require-no-tls12 Critical if TLS 1.2 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 --resolve-over-http [server] Resolve the host over HTTP using Google or the specified server --resolve ip Provide a custom IP address for the specified host --rootcert-dir path Root directory to be used for certificate validation --rootcert-file path Root certificate to be used for certificate validation --rsa Signature algorithm selection: force RSA certificate --security-level number Set the security level to specified value See SSLCTXsetsecuritylevel(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 --tls1 Force TLS version 1 --tls11 Force TLS version 1.1 --tls12 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. Can 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) --crl Check revocation via CRL (enabled by default) --curl-user-agent string User agent that curl shall use to obtain the issuer cert --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) --nossl2 Disable SSLv2 (deprecated use --no-ssl2) --nossl3 Disable SSLv3 (deprecated use --no-ssl3) --notls1 Disable TLSv1 (deprecated use --no-tls1) --notls11 Disable TLSv1.1 (deprecated use --no-tls11) --notls12 Disable TLSv1.1 (deprecated use --no-tls12) --notls13 Disable TLSv1.1 (deprecated use --no-tls13) --ocsp Check revocation via OCSP (enabled by default) --require-hsts Require HTTP Strict Transport Security (deprecated use --require-security-header strict-transport-security) --require-san Require the presence of a Subject Alternative Name extension --require-security-header header require the specified HTTP security header (e.g., X-Frame-Options) (deprecated use --require-http-header) --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 --require-security-headers-path path the path to be used to fetch HTTP security headers --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)

Report bugs to https://github.com/matteocorti/checksslcert/issues ```

Configuration

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

text $ 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.

Expect & timeout

check_ssl_cert requires expect or timeout to enable timeouts. If expect or timeout are not present on your system, timeouts will be disabled.

Virtual servers

check_ssl_cert supports the servername TLS extension in ClientHello if the installed OpenSSL version provides it. This is needed if you are checking a server with virtual hosts.

SSL Labs

If -L or --check-ssl-labs are specified, the plugin will check the cached status using the SSL Labs Assessment API.

The plugin will ask for a cached result (maximum age 1 day) to avoid too many checks. The first time you issue the check you could therefore get an outdated result.

Root Certificate

The root certificate corresponding to the checked certificate must be available to OpenSSL or must be specified with the -r cabundle or --rootcert cabundle option, where cabundle is either a file for -CAfile or a directory for -CApath.

On macOS the root certificates bundle is stored in the Keychain and OpenSSL will complain with:

text verification error: unable to get local issuer certificate

The bundle can be extracted with:

text $ sudo security find-certificate -a \ -p /System/Library/Keychains/SystemRootCertificates.keychain > cabundle.crt

and then submitted to check_ssl_cert with the -r,--rootcert path option

text ./check_ssl_cert -H www.google.com -r ./cabundle.crt

Quoting in Nagios

An asterisk * is automatically escaped by nagios. If you need to specify an option (e.g., --cn) with an argument containing an asterisk you need to enclose it in double quotes (e.g., ''*.github.com'')

bash completion and caching

Once the host name cache (${HOME}/.check_ssl_cert-cache) is initialized (with the --init-host-cache option), every specified host is cached.

The host name cache is a plain text file which contains an host name per line. Each time a new host is specified, it is automatically added to the cache. The file can be edited with a text editor (to delete or edit entries).

When using bash completion with the --host command line option the cache is then read and used as a suggestion.

Development

Testing

To run the test suite you will need shUnit2

  • Manual install: github
  • macOS with Homebrew: brew install shunit2
  • Debian, Ubuntu: apt-get install shunit2
  • Fedora: dnf install shunit2

Run make test to execute the whole test suite.

To enable debugging output for the tests set the TEST_DEBUG environment variable to --debug:

text export TEST_DEBUG=--debug make test

With make disttest you can check the formatting of the files (e.g. tabs and blanks at the end of the lines) and run ShellCheck to lint the scripts.

With make codespell ypu can perform a spell check on the code and documentation.

To run a single test:

  • set the SHUNIT2 environment variable with the location of the shUnit2 binary
  • change the directory to the test suite: cd test
  • execute the test suite with the tests to be run as argument after --. For example ./unit_tests.sh -- testName

Documentation

The majority of the documentation files are written using the GitHub Flavored Markdown language.

Supporters

We are very grateful to our amazing supporters and sponsors!

If you'd like to support this script, please visit our sponsorship page on GitHub.

Bugs

Report bugs to https://github.com/matteocorti/checksslcert/issues

Owner

  • Name: Matteo Corti
  • Login: matteocorti
  • Kind: user
  • Location: Zürich, Switzerland
  • Company: ETH Zürich

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Corti"
  given-names: "Matteo"
  orcid: "https://orcid.org/0000-0002-1746-1108"
- family-names: "Палаузов"
  given-names: "Дилян"
  website: https://github.com/dilyanpalauzov
- family-names: "Cécile"
  given-names: "Adam"
  website: https://github.com/eLvErDe
- name: agibson2
  website: https://github.com/agibson2
- name: Alexander Aleksandrovič Klimov
  website: https://github.com/Al2Klimov
- name: alvar
  website: https://github.com/oxzi
- family-names: "Klärner"
  given-names: "Andre"
  website: https://github.com/klaernie
- family-names: "Dijkman"
  given-names: "Andreas"
- family-names: "Miśkiewicz"
  given-names: "Arkadiusz"
  website: https://github.com/arekm
- name: barakAtSoluto
  website: https://github.com/barakAtSoluto
- family-names: "Byrne"
  given-names: "Ben"
  website: https://github.com/benbyr
- family-names: "Strößenreuther"
  given-names: "Bernd"
  website: https://github.com/booboo-at-gluga-de
- name: booboo-at-gluga-de
  website: https://github.com/booboo-at-gluga-de
- name: cbiedl
  website: https://github.com/cbiedl
- name: chornberger-c2c
  website: https://github.com/chornberger-c2c
- family-names: "Ruppert"
  given-names: "Christian"
- family-names: "Moench-Tegeder"
  given-names: "Christoph"
  website: https://github.com/moench-tegeder
- family-names: "Kuenzler"
  given-names: "Claudio"
  website: https://github.com/Napsty
- name: claudioth
  website: https://github.com/claudioth
- family-names: "Riegg"
  given-names: "Claus-Theodor"
  website: https://github.com/ctriegg-mak
- family-names: "Smith"
  given-names: "Colin"
- name: d7415
  website: https://github.com/d7415
- family-names: "Pritts"
  given-names: "Dan"
- family-names: "Wallis"
  given-names: "Dan"
- family-names: "Visser"
  given-names: "Dick"
  website: https://github.com/dnmvisser
- name: dupondje
  website: https://github.com/dupondje
- family-names: "Sabol"
  given-names: "Ed"
  website: https://github.com/esabol
- name: eeertel
  website: https://github.com/eeertel
- name: eimamagi
  website: https://github.com/eimamagi
- family-names: "Ertel"
  given-names: "Emilian"
- family-names: "Apolloner"
  given-names: "Florian"
  website: https://github.com/apollo13
- name: Georg
  website: https://github.com/gbotti
- name: grizzlydev-sarl
  website: https://github.com/grizzlydev-sarl
- name: iasdeoupxe
  website: https://github.com/iasdeoupxe
- family-names: "Mironov"
  given-names: "Igor"
  website: https://github.com/mcs6502
- family-names: "Hablutzel"
  given-names: "Jaime"
  website: https://github.com/hablutzel1
- name: jalbstmeijer
  website: https://github.com/jalbstmeijer
- name: Jalonet
  website: https://github.com/jalonet
- family-names: "Gonel"
  given-names: "Javier"
- family-names: "Lecour"
  given-names: "Jérémy"
- name: jf-vf
  website: https://github.com/jf-vf
- family-names: "Hopp"
  given-names: "Jim"
- name: jmuecke
  website: https://github.com/jmuecke
- family-names: "Meurer"
  given-names: "Jonas"
  website: https://github.com/mejo-
- family-names: "Besanceney"
  given-names: "Jonathan"
  website: https://github.com/jonathan-besanceney
- family-names: "Thalheim"
  given-names: "Jörg"
  website: https://github.com/Mic92
- name: juckerf
  website: https://github.com/juckerf
- family-names: "McCormack"
  given-names: "Kenny"
- family-names: "Jahn"
  given-names: "Kim"
  website: https://github.com/mookie-
- family-names: "Shalygin"
  given-names: "Konstantin"
- family-names: "Velikov"
  given-names: "Kosta"
- family-names: "Quigley-Jones"
  given-names: "Lawren"
- name: Leynos
  website: https://github.com/leynos
- family-names: "Tribus"
  given-names: "Lukas"
  website: https://github.com/lukastribus
- family-names: "Wąsikowski"
  given-names: "Łukasz"
  website: https://github.com/IdahoPL
- family-names: "Fournier"
  given-names: "Marc"
- family-names: "Burkhalter"
  given-names: "Marcel"
  website: https://github.com/explorer69
- family-names: "Burkhalter"
  given-names: "Marcel"
  website: https://github.com/marcel-burkhalter
- family-names: "Rejås"
  given-names: "Marcus"
- family-names: "Ruys"
  given-names: "Mark"
- family-names: "Frosch"
  given-names: "Markus"
  website: https://github.com/lazyfrosch
- family-names: "Simon"
  given-names: "Mathieu"
  website: https://github.com/matsimon
- family-names: "Fuhrmeister"
  given-names: "Matthias"
- family-names: "Winterstein"
  given-names: "Max"
- family-names: "Niewiara"
  given-names: "Michael"
  website: https://github.com/mobitux
- family-names: "Margula"
  given-names: "Michał"
  website: https://github.com/alchemyx
- family-names: "Koudelka"
  given-names: "Milan"
- name: Naveen
  website: https://github.com/naveensrinivasan
- name: Nico
  website: https://github.com/nicox
- family-names: "Lafont"
  given-names: "Nicolas"
  website: https://github.com/ManicoW
- family-names: "Rochnyak"
  given-names: "Pavel"
  website: https://github.com/rpv-tomsk
- family-names: "Newman"
  given-names: "Peter"
  website: https://github.com/peternewman
- name: Peter
  website: https://github.com/Peter2121
- family-names: "Kueck"
  given-names: "Philippe"
- family-names: "Rupert"
  given-names: "Pim"
  website: https://github.com/prupert
- name: PSSGCSim
  website: https://github.com/PSSGCSim
- family-names: "Thoma"
  given-names: "Raphael"
- family-names: "Bartels"
  given-names: "Ricardo"
  website: https://github.com/bb-Ricardo
- name: Ricardo
  website: https://github.com/bb-Ricardo
- family-names: "Yamry"
  given-names: "Rob"
- name: Robin H. Johnson
- family-names: "Pronk"
  given-names: "Robin"
  website: https://github.com/rfpronk
- family-names: "Schneider"
  given-names: "Robin"
  website: https://github.com/ypid-geberit
- name: Rolf Eike Beer
- family-names: "Nowakowski"
  given-names: "Ryan"
- family-names: "Richards"
  given-names: "Sam"
- family-names: "Cornelissen"
  given-names: "Sander"
  website: https://github.com/scornelissen85
- family-names: "Worthington"
  given-names: "Scott"
- family-names: "Shmanko"
  given-names: "Sergei"
  website: https://github.com/sshmanko
- name: skanx
  website: https://github.com/skanx
- name: Slavko
  website: https://github.com/slavkoja
- name: sokol-44
  website: https://github.com/sokol-44
- family-names: "Schlesinger"
  given-names: "Stefan"
- family-names: "Nierlein"
  given-names: "Sven"
- family-names: "Weißschuh"
  given-names: "Thomas"
  website: https://github.com/t-8ch
- family-names: "Grünewald"
  given-names: "Tobias"
  website: https://github.com/tobias-gruenewald
- family-names: "Geißler"
  given-names: "Tom"
  website: https://github.com/d7031
- name: Tone
  website: https://github.com/anthonyhaussman
- name: tunnelpr0
  website: https://github.com/tunnelpr0
- family-names: "Haarala"
  given-names: "Tuomas"
- family-names: "Heidelberger"
  given-names: "Valentin"
  website: https://github.com/va1entin
- name: Vamp898
  website: https://github.com/Vamp898
- name: vanElden
  website: https://github.com/vanElden
- name: Varac
  website: https://github.com/varac
- family-names: "Szépe"
  given-names: "Viktor"
- family-names: "Horky"
  given-names: "Vojtech"
- family-names: "Horky"
  given-names: "Vojtech"
  website: https://github.com/vhotspur
- name: waja
  website: https://github.com/waja
- name: Wim van Ravesteijn
  website: https://github.com/wimvr
- family-names: "Schricker"
  given-names: "Wolfgang"
- name: xert
  website: https://github.com/xert
- family-names: "Gravel"
  given-names: "Yannick"
- name: yasirathackersdotmu
  website: https://github.com/yasirathackersdotmu
- name: Zadkiel
  website: https://github.com/aslafy-z
title: "check_ssl_cert"
version: 2.94.0
date-released: 2025-07-30
url: "https://github.com/matteocorti/check_ssl_cert"
repository-code: "https://github.com/matteocorti/check_ssl_cert"
keywords:
  - "certificate"
  - "openssl"
  - "shell-script"
  - "nagios-plugin"
abstract: A shell script (that can be used as a Nagios/Icinga plugin) to check an SSL/TLS connection.
contact:
  - email: matteo@corti.li
    family-names: Corti
    given-names: Matteo
type: software
license: GPL-3.0

GitHub Events

Total
  • Create event: 11
  • Commit comment event: 3
  • Release event: 11
  • Issues event: 26
  • Watch event: 31
  • Issue comment event: 56
  • Push event: 51
  • Pull request review event: 1
  • Pull request event: 7
  • Fork event: 2
Last Year
  • Create event: 11
  • Commit comment event: 3
  • Release event: 11
  • Issues event: 26
  • Watch event: 31
  • Issue comment event: 56
  • Push event: 51
  • Pull request review event: 1
  • Pull request event: 7
  • Fork event: 2

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 2,066
  • Total Committers: 87
  • Avg Commits per committer: 23.747
  • Development Distribution Score (DDS): 0.175
Past Year
  • Commits: 86
  • Committers: 4
  • Avg Commits per committer: 21.5
  • Development Distribution Score (DDS): 0.047
Top Committers
Name Email Commits
Matteo Corti m****o@c****i 1,705
corti c****i@5****d 98
Peter Newman p****n 35
iasdeoupxe 3****e 25
grizzldyev-sarl g****t@g****m 16
Bernd Stroessenreuther b****o@g****e 14
Ricardo Bartels r****o@b****m 12
Barak Haim b****k@s****m 10
Pavel Rochnyack p****0@n****u 10
Jan Wagner w****a@c****g 6
Vojtech Horky v****y@g****m 5
Wim van Ravesteijn w****b@r****l 5
Zadkiel h****o@z****r 5
Дилян Палаузов g****a@a****g 5
Matteo Corti c****i@i****n 4
Robert Kánia rk@r****z 4
Mathieu Simon m****n@1****h 4
Sander Cornelissen s****5@g****m 4
dependabot[bot] 4****] 4
Valentin Heidelberger h****r@u****e 3
Kim Jahn g****b@m****g 3
Marcel Burkhalter m****r@d****h 3
Alvar Penning a****g@i****m 3
Rolf Eike Beer e****e@s****e 3
Łukasz Wąsikowski g****b@i****l 3
Dan Pritts d****o@u****u 2
Georg g****i@g****e 2
Viktor Szépe v****r@s****t 2
agibson2 a****2@g****m 2
Jörg Thalheim M****2 2
and 57 more...

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 143
  • Total pull requests: 72
  • Average time to close issues: 30 days
  • Average time to close pull requests: 2 days
  • Total issue authors: 92
  • Total pull request authors: 40
  • Average comments per issue: 3.78
  • Average comments per pull request: 1.15
  • Merged pull requests: 68
  • Bot issues: 0
  • Bot pull requests: 2
Past Year
  • Issues: 19
  • Pull requests: 6
  • Average time to close issues: 2 days
  • Average time to close pull requests: 22 days
  • Issue authors: 17
  • Pull request authors: 3
  • Average comments per issue: 2.53
  • Average comments per pull request: 0.5
  • Merged pull requests: 5
  • Bot issues: 0
  • Bot pull requests: 1
Top Authors
Issue Authors
  • matteocorti (24)
  • lukastribus (5)
  • catharsis71 (3)
  • tuxracer1337 (3)
  • kroomagnon (3)
  • paulchen (2)
  • peternewman (2)
  • Kjunix (2)
  • gloomytrousers (2)
  • DukeSniper (2)
  • stefan6419846 (2)
  • eLvErDe (2)
  • mmdevl (2)
  • markuswernig (2)
  • willemdh (2)
Pull Request Authors
  • matteocorti (8)
  • bb-Ricardo (7)
  • rpv-tomsk (5)
  • oxzi (5)
  • xert (4)
  • vanElden (2)
  • esabol (2)
  • dependabot[bot] (2)
  • alchemyx (2)
  • sshmanko (2)
  • szepeviktor (2)
  • DerDakon (2)
  • gbotti (2)
  • booboo-at-gluga-de (2)
  • claudioth (2)
Top Labels
Issue Labels
bug (78) enhancement (30) help wanted (4) question (2) invalid (1) wontfix (1) need more info (1)
Pull Request Labels
enhancement (5) dependencies (2) github_actions (1)

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 250
proxy.golang.org: github.com/matteocorti/check_ssl_cert
  • Versions: 250
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 4 months ago

Dependencies

.github/workflows/codespell.yml actions
  • actions/checkout v3 composite
  • codespell-project/actions-codespell master composite
.github/workflows/publish.yml actions
  • actions/checkout v3 composite
.github/workflows/integration_tests.yml actions
  • actions/checkout v3 composite
  • perl-actions/install-with-cpanm v1 composite
.github/workflows/unit_tests.yml actions
  • actions/checkout v3 composite
  • perl-actions/install-with-cpanm v1 composite
.github/workflows/integration_tests_with_proxy.yml actions
  • actions/checkout v4 composite
  • perl-actions/install-with-cpanm v1 composite
.github/workflows/unit_tests_with_proxy.yml actions
  • actions/checkout v4 composite
  • perl-actions/install-with-cpanm v1 composite