Surveillance et renouvellement automatisés des certificats SSL avec Notion et Telegram
Avancé
Ceci est unSecOpsworkflow d'automatisation du domainecontenant 21 nœuds.Utilise principalement des nœuds comme If, Set, Ssh, Code, Wait. utilisationNotionetTelegram实现SSL证书deautomatisationsurveillance与续期
Prérequis
- •Clé API Notion
- •Token Bot Telegram
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
Nœuds utilisés (21)
Catégorie
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
"meta": {
"instanceId": "0b5a6312708ae192922c99c43dfe92176cea5b0f71962c24e17df7b02bbd37c2",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "469d3992-ba1a-47c2-8400-73224b70425c",
"name": "Vérifier SSL",
"type": "n8n-nodes-base.httpRequest",
"position": [
1620,
600
],
"parameters": {
"url": "=https://ssl-checker.io/api/v1/check/{{ $json.name }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "c84b355a-0f3a-4256-b835-28f1a2c08fbb",
"name": "Si",
"type": "n8n-nodes-base.if",
"position": [
2040,
600
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "e4af952e-e497-4d8e-a0fe-6d05c385bdd6",
"operator": {
"type": "number",
"operation": "lt"
},
"leftValue": "={{ $('Refresh SSL Status').item.json.result.days_left }}",
"rightValue": 14
}
]
}
},
"typeVersion": 2.2
},
{
"id": "da422db5-a9cf-4977-b508-ec4d17f34c56",
"name": "Obtenir Infos SSL",
"type": "n8n-nodes-base.notion",
"position": [
1420,
600
],
"parameters": {
"options": {},
"resource": "databasePage",
"operation": "getAll",
"returnAll": true
},
"credentials": {
"notionApi": {
"id": "jNo8UqufbOaVdEoY",
"name": "Notion account"
}
},
"typeVersion": 2.2
},
{
"id": "806efbf8-9783-439e-8068-b59b86f41be8",
"name": "Actualiser Statut SSL",
"type": "n8n-nodes-base.code",
"position": [
1840,
600
],
"parameters": {
"jsCode": "// Loop over input items and add a new field called 'myNewField' to the JSON of each one\nfor (const item of $input.all()) {\n if (item.json.result.days_left < 14) {\n item.json.ssl_status = \"It's about to expire.\";\n } else if (item.json.result.days_left >= 14) {\n item.json.ssl_status = \"Normal\";\n } else {\n item.json.ssl_status = \"Unavailable\";\n }\n}\n\nreturn $input.all();"
},
"typeVersion": 2
},
{
"id": "b82487c2-9070-4741-b8a3-d91595b52272",
"name": "Mettre à Jour Infos SSL",
"type": "n8n-nodes-base.notion",
"position": [
2420,
740
],
"parameters": {
"pageId": {
"__rl": true,
"mode": "url",
"value": "={{ $('Get SSL Info').item.json.url }}"
},
"options": {},
"resource": "databasePage",
"operation": "update",
"propertiesUi": {
"propertyValues": [
{
"key": "Creation Date|date",
"date": "={{ $json.result.valid_from }}",
"timezone": "Asia/Taipei",
"includeTime": false
},
{
"key": "Expiration Date|date",
"date": "={{ $json.result.valid_till }}",
"timezone": "Asia/Taipei",
"includeTime": false
},
{
"key": "SSL 狀態|select",
"selectValue": "={{ $json.ssl_status }}"
},
{
"key": "Last Check At|date",
"date": "={{ $now.toString() }}"
}
]
}
},
"credentials": {
"notionApi": {
"id": "jNo8UqufbOaVdEoY",
"name": "Notion account"
}
},
"typeVersion": 2.2
},
{
"id": "8e721b47-ea70-462f-9bcd-7c7d82197c6e",
"name": "Fusionner Contenu",
"type": "n8n-nodes-base.code",
"position": [
2620,
480
],
"parameters": {
"jsCode": "var result = \"The certificates for the following domains are about to expire. Please confirm that they have been updated to avoid unexpected service downtime.:\\n\";\nvar index = 1;\n\nfor (const item of $('Refresh SSL Status').all()) {\n if (item.json.result.days_left < 14) {\n result += `${index}. ${item.json.host}:${item.json.result.days_left} days remaining.\\n`;\n \n index++;\n }\n}\n\nresult += \"\\nThe instruction to update the credentials has been automatically triggered and the system will check again.\";\n\nreturn {output: result};"
},
"typeVersion": 2
},
{
"id": "dbac84ed-cde7-4ec0-83ad-9f66b8c313d5",
"name": "Déclencheur Hebdomadaire",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
740,
600
],
"parameters": {
"rule": {
"interval": [
{
"field": "weeks"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "b6e10348-6364-4ba1-8770-d4451e88bc3a",
"name": "Au clic sur 'Exécuter le workflow'",
"type": "n8n-nodes-base.manualTrigger",
"position": [
740,
420
],
"parameters": {},
"typeVersion": 1
},
{
"id": "883b7a42-f6d8-43f2-b06b-9f7ced94a53c",
"name": "Attendre",
"type": "n8n-nodes-base.wait",
"position": [
3300,
480
],
"webhookId": "566cb4a9-c513-442f-97bc-ffb5ff01c904",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "c4a69edf-680a-461e-ad07-b59b478a511d",
"name": "Si3",
"type": "n8n-nodes-base.if",
"position": [
2240,
720
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "273ad0c0-dc65-4e22-8248-2394cf9540b8",
"operator": {
"type": "array",
"operation": "lengthNotEquals",
"rightType": "number"
},
"leftValue": "={{ $('If').all() }}",
"rightValue": "={{ $('Get SSL Info').all().length }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "43d2b787-83cf-46c0-9a7f-d96d9790c118",
"name": "Fusionner",
"type": "n8n-nodes-base.merge",
"position": [
2420,
480
],
"parameters": {
"mode": "chooseBranch"
},
"typeVersion": 3.1
},
{
"id": "69cdc9ee-aff1-4487-92ff-f025210a2c68",
"name": "Si1",
"type": "n8n-nodes-base.if",
"position": [
2620,
740
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b519c2ca-048a-4a53-97f3-d2c6fec2987e",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('Select Who Triggered').first().json.triggerBy }}",
"rightValue": "anotherWorkflow"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "3084cc79-82ed-470b-bf13-bad763f1eb4f",
"name": "Exécuter Workflow",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
3520,
480
],
"parameters": {
"options": {},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "WO0anosBgPhhJ0Qi",
"cachedResultName": "SSL Check Service"
},
"workflowInputs": {
"value": {
"has_expired_cert": true
},
"schema": [
{
"id": "has_expired_cert",
"type": "boolean",
"display": true,
"removed": false,
"required": false,
"displayName": "has_expired_cert",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"has_expired_cert"
],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "323cf648-0ed5-4b0c-801f-ea088a8c969f",
"name": "Lors de l'exécution par un autre workflow",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
740,
780
],
"parameters": {
"workflowInputs": {
"values": [
{
"name": "has_expired_cert",
"type": "boolean"
}
]
}
},
"typeVersion": 1.1
},
{
"id": "950d0d4f-7ec7-4fdf-a871-fdc2f6a695d6",
"name": "Définir Déclenchement par Clic",
"type": "n8n-nodes-base.set",
"position": [
960,
420
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "7ae06a67-600e-4efa-9eb1-da1bf83dc983",
"name": "triggerBy",
"type": "string",
"value": "click"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "ffe248fd-0a2e-4635-a749-8f982a5a5412",
"name": "Définir Déclenchement Hebdomadaire",
"type": "n8n-nodes-base.set",
"position": [
960,
600
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "7ae06a67-600e-4efa-9eb1-da1bf83dc983",
"name": "triggerBy",
"type": "string",
"value": "weekly"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "a1f5e319-1cff-4bb7-8911-d067095d1c6c",
"name": "Définir Déclenchement par autreWorkflow",
"type": "n8n-nodes-base.set",
"position": [
960,
780
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "7ae06a67-600e-4efa-9eb1-da1bf83dc983",
"name": "triggerBy",
"type": "string",
"value": "anotherWorkflow"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "758c172a-d289-4a1c-8e3d-1c4aaf643ff6",
"name": "Sélectionner Qui a Déclenché",
"type": "n8n-nodes-base.merge",
"position": [
1220,
600
],
"parameters": {
"numberInputs": 3
},
"typeVersion": 3.1
},
{
"id": "6b7db2a1-677a-4e24-93b7-baff9a2b60c2",
"name": "Renouveler Certificat Serveur",
"type": "n8n-nodes-base.ssh",
"position": [
3080,
480
],
"parameters": {
"cwd": "/your/work//directory",
"command": "sudo certbot renew",
"authentication": "privateKey"
},
"credentials": {
"sshPrivateKey": {
"id": "A1cgCKhrMGdu22tY",
"name": "SSH Password account"
}
},
"typeVersion": 1
},
{
"id": "caa30dca-a69e-499c-802b-e025ea8f4c10",
"name": "Telegram",
"type": "n8n-nodes-base.telegram",
"position": [
2860,
480
],
"webhookId": "82b65c71-8e83-427f-a18c-bf2a18f65385",
"parameters": {
"text": "=\\[Notify] `{{ $workflow.name }}`\n{{ $json.output }}",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "DGiiOp2EYP2DkQ4z",
"name": "Telegram account_n8n_assistant"
}
},
"typeVersion": 1.2
},
{
"id": "1853becf-ec46-47e2-b51e-c03f616e16ee",
"name": "Telegram1",
"type": "n8n-nodes-base.telegram",
"position": [
2860,
720
],
"webhookId": "82b65c71-8e83-427f-a18c-bf2a18f65385",
"parameters": {
"text": "=\\[Notify] `{{ $workflow.name }}`\nThe SSL certificate has been updated and all certificates are normal.",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "DGiiOp2EYP2DkQ4z",
"name": "Telegram account_n8n_assistant"
}
},
"typeVersion": 1.2
}
],
"pinData": {},
"connections": {
"c84b355a-0f3a-4256-b835-28f1a2c08fbb": {
"main": [
[
{
"node": "43d2b787-83cf-46c0-9a7f-d96d9790c118",
"type": "main",
"index": 0
}
],
[
{
"node": "c4a69edf-680a-461e-ad07-b59b478a511d",
"type": "main",
"index": 0
}
]
]
},
"69cdc9ee-aff1-4487-92ff-f025210a2c68": {
"main": [
[
{
"node": "1853becf-ec46-47e2-b51e-c03f616e16ee",
"type": "main",
"index": 0
}
]
]
},
"c4a69edf-680a-461e-ad07-b59b478a511d": {
"main": [
[
{
"node": "43d2b787-83cf-46c0-9a7f-d96d9790c118",
"type": "main",
"index": 1
}
],
[
{
"node": "b82487c2-9070-4741-b8a3-d91595b52272",
"type": "main",
"index": 0
}
]
]
},
"883b7a42-f6d8-43f2-b06b-9f7ced94a53c": {
"main": [
[
{
"node": "3084cc79-82ed-470b-bf13-bad763f1eb4f",
"type": "main",
"index": 0
}
]
]
},
"43d2b787-83cf-46c0-9a7f-d96d9790c118": {
"main": [
[
{
"node": "8e721b47-ea70-462f-9bcd-7c7d82197c6e",
"type": "main",
"index": 0
}
]
]
},
"caa30dca-a69e-499c-802b-e025ea8f4c10": {
"main": [
[
{
"node": "6b7db2a1-677a-4e24-93b7-baff9a2b60c2",
"type": "main",
"index": 0
}
]
]
},
"469d3992-ba1a-47c2-8400-73224b70425c": {
"main": [
[
{
"node": "806efbf8-9783-439e-8068-b59b86f41be8",
"type": "main",
"index": 0
}
]
]
},
"da422db5-a9cf-4977-b508-ec4d17f34c56": {
"main": [
[
{
"node": "469d3992-ba1a-47c2-8400-73224b70425c",
"type": "main",
"index": 0
}
]
]
},
"8e721b47-ea70-462f-9bcd-7c7d82197c6e": {
"main": [
[
{
"node": "caa30dca-a69e-499c-802b-e025ea8f4c10",
"type": "main",
"index": 0
}
]
]
},
"dbac84ed-cde7-4ec0-83ad-9f66b8c313d5": {
"main": [
[
{
"node": "ffe248fd-0a2e-4635-a749-8f982a5a5412",
"type": "main",
"index": 0
}
]
]
},
"b82487c2-9070-4741-b8a3-d91595b52272": {
"main": [
[
{
"node": "69cdc9ee-aff1-4487-92ff-f025210a2c68",
"type": "main",
"index": 0
}
]
]
},
"6b7db2a1-677a-4e24-93b7-baff9a2b60c2": {
"main": [
[
{
"node": "883b7a42-f6d8-43f2-b06b-9f7ced94a53c",
"type": "main",
"index": 0
}
]
]
},
"806efbf8-9783-439e-8068-b59b86f41be8": {
"main": [
[
{
"node": "c84b355a-0f3a-4256-b835-28f1a2c08fbb",
"type": "main",
"index": 0
}
]
]
},
"950d0d4f-7ec7-4fdf-a871-fdc2f6a695d6": {
"main": [
[
{
"node": "758c172a-d289-4a1c-8e3d-1c4aaf643ff6",
"type": "main",
"index": 0
}
]
]
},
"758c172a-d289-4a1c-8e3d-1c4aaf643ff6": {
"main": [
[
{
"node": "da422db5-a9cf-4977-b508-ec4d17f34c56",
"type": "main",
"index": 0
}
]
]
},
"ffe248fd-0a2e-4635-a749-8f982a5a5412": {
"main": [
[
{
"node": "758c172a-d289-4a1c-8e3d-1c4aaf643ff6",
"type": "main",
"index": 1
}
]
]
},
"a1f5e319-1cff-4bb7-8911-d067095d1c6c": {
"main": [
[
{
"node": "758c172a-d289-4a1c-8e3d-1c4aaf643ff6",
"type": "main",
"index": 2
}
]
]
},
"323cf648-0ed5-4b0c-801f-ea088a8c969f": {
"main": [
[
{
"node": "a1f5e319-1cff-4bb7-8911-d067095d1c6c",
"type": "main",
"index": 0
}
]
]
},
"b6e10348-6364-4ba1-8770-d4451e88bc3a": {
"main": [
[
{
"node": "950d0d4f-7ec7-4fdf-a871-fdc2f6a695d6",
"type": "main",
"index": 0
}
]
]
}
}
}Foire aux questions
Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Opérations de sécurité
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Explorer les nœuds n8n dans la bibliothèque de références visuelles
Explorer les nœuds n8n dans la base de références visuelles
If
Ftp
Set
+
If
Ftp
Set
113 NœudsI versus AI
Autres
↔️ Traitement par lots Airtable
Mise à jour/insertion par lots Airtable (envoi plus rapide + économie d'appels API)
If
Set
Code
+
If
Set
Code
35 NœudsSimon Mayerhofer
Opérations IT
Version professionnelle de l'automatisation de blog WordPress (recherche approfondie) v2.1 sur le marché
Automatisation de la création de blog optimisé pour le SEO avec GPT-4o, Perplexity AI et support multilingue
If
Set
Xml
+
If
Set
Xml
125 NœudsDaniel Ng
Création de contenu
Moteur automatisé de contenu viral pour LinkedIn et X
Création et publication automatique de contenu viral pour LinkedIn et X avec l'IA
If
Set
Wait
+
If
Set
Wait
156 NœudsDiptamoy Barman
Création de contenu
Sauvegarde automatisée des workflows n8n vers GitHub avec suivi des suppressions
Sauvegarde automatisée des workflows n8n vers GitHub et suivi des suppressions
If
N8n
Set
+
If
N8n
Set
31 NœudsMarcial Ambriz
DevOps
Synchronisation bidirectionnelle des processus Typebot et GitHub, avec l'API Typebot
Synchronisation bidirectionnelle entre les processus Typebot et GitHub, via l'API Typebot
If
Set
Code
+
If
Set
Code
31 NœudsMarcial Ambriz
DevOps
Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds21
Catégorie1
Types de nœuds13
Description de la difficulté
Auteur
Frank Chen
@frankchenLiens externes
Voir sur n8n.io →
Partager ce workflow