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

Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds21
Catégorie1
Types de nœuds13
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34