Automate SSL Certificate Expiry Alerts using n8n

Get SSL insights about your websites using your own n8n workflow
October 16, 2025 by
Automate SSL Certificate Expiry Alerts using n8n
Alixsander Haj Saw
| No comments yet


Introduction

This article covers a simple n8n workflow that can check multiple websites SSL expiry date and send notifications accordingly.

The workflow uses built in nodes only and does not require any 3rd party apis or integrations. It can also handle errors when a certificate is not present or the website is not reachable.

This method is suitable for publicly restricted websites as well by adding the n8n server to the same network as the restricted website.

Prerequisites

  • n8n instance
  • Internet
  • Hustle


SSL Monitoring Workflow

This workflow does not use

You can download the workflow below:

<<< Workflow Download

Here is a breakdown of the workflow:

This workflow runs daily, checks SSL certificate expiry date based on a list of websites, calculates the number of days left before expiry, sends a notification if the SSL is expiring in less than 10 days, and if checking for SSL certificate fails (website not reachable or no certificate) an error message is sent instead.


Things you could consider modifying:

  • Modify the Schedule Trigger node to set when should the workflow run.
  • Modify the Website List node to include all the domains inside the list (urlList).
  • Modify the Condition node to set how many days before the expiry date should the notification be sent.
  • Modify the Alert nodes if you want to customize the message sent or use a different platform like emails, telegram, etc..


Additional Notes

As mentioned in the introduction, you can use this workflow even on publicly restricted websites if the n8n server is on the same network or is whitelisted.

You can use a 3rd party solution like ssl-checker.io for checking SSL expiry as well. Add an HTTP node instead of the OpenSSL node, then use the api endpoint to get certificate details:

https://ssl-checker.io/api/v1/check/{{ $your.domain.variable.here }}

This method has multiple downsides:

  • Can't be used with publicly restricted websites.
  • ssl-checker endpoint has rate limiting, therefor you'll need to add a wait node inside the loop which makes it slower.
  • Makes you dependent on a 3rd party service.



Sign in to leave a comment