Need help with certificate-expiry-monitor?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.


426 Stars 119 Forks GNU Affero General Public License v3.0 30 Commits 11 Opened issues

Services available

Need anything else?

Certificate Expiry Monitor



Certificate Expiry Monitor is an open source monitoring tool for certificates. It monitors websites and emails you when the certificates are about to expire.

See the example site:


  • PHP 5.6+
  • OpenSSL
  • PHP must allow remote fopen.


Unpack, change some variables, setup a cronjob and go!

First get the code and unpack it to your webroot:

cd /var/www/html/
git clone

Create the database files, outside of your webroot. If you create these inside your webroot, everybody can read them.

echo '{}' > /var/www/certificate-expiry-monitor-db/pre_checks.json
echo '{}' > /var/www/certificate-expiry-monitor-db/checks.json
echo '{}' > /var/www/certificate-expiry-monitor-db/deleted_checks.json
chown -R $wwwuser /var/www/certificate-expiry-monitor-db/*.json

These files are used by the tool as database for checks.

Change the location of these files in

// set this to a location outside of your webroot so that it cannot be accessed via the internets.

$pre_check_file = '/var/www/html/certificate-expiry-monitor/pre_checks.json'; $check_file = '/var/www/html/certificate-expiry-monitor/checks.json'; $deleted_check_file = '/var/www/html/certificate-expiry-monitor/deleted_checks.json';

Also change the

variable, it is used in all the email addresses.
$current_domain = "";


, which may or may not be the same. It is used in the confirm and unsubscribe links, and depends on your webserver configuration.
here means your unsubscribe links will start
$current_link = "";

Set up the cronjob to run once a day:

# /etc/cron.d/certificate-expiry-monitor
1 1 * * * $wwwuser /path/to/php /var/www/html/certificate-expiry-monitor/cron.php >> /var/log/certificate-expiry-monitor.log 2>&1

The default timeout for checks is 2 seconds. If this is too fast for your internal services, this can be raised in the


We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.