UNPKG

node-red-contrib-trustpoint

Version:

Node-RED nodes for EST (Enrollment over Secure Transport) and certificate operations.

1,085 lines (1,084 loc) 34.5 kB
[ { "id": "fc669d4eef925a6b", "type": "tab", "label": "Full process", "disabled": false, "info": "", "env": [] }, { "id": "5dd17922f697f3b5", "type": "mqtt out", "z": "fc669d4eef925a6b", "name": "MQTT OUT test/topic", "topic": "test/topic", "qos": "2", "retain": "", "respTopic": "", "contentType": "", "userProps": "", "correl": "", "expiry": "", "broker": "e9d5e15cc55fcbb5", "x": 220, "y": 380, "wires": [] }, { "id": "9cc430d9e3f15074", "type": "mqtt in", "z": "fc669d4eef925a6b", "name": "MQTT IN test/topic", "topic": "test/topic", "qos": "2", "datatype": "auto-detect", "broker": "e9d5e15cc55fcbb5", "nl": false, "rap": true, "rh": 0, "inputs": 0, "x": 210, "y": 480, "wires": [ [ "b6ad932878b647d8", "1bd294a0a7a06aeb", "00b051fd265dfa3b" ] ] }, { "id": "b6ad932878b647d8", "type": "debug", "z": "fc669d4eef925a6b", "name": "debug 4", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 420, "y": 480, "wires": [] }, { "id": "1bd294a0a7a06aeb", "type": "ui_chart", "z": "fc669d4eef925a6b", "name": "", "group": "mqtt-group", "order": 1, "width": 0, "height": 0, "label": "Messages Chart", "chartType": "line", "legend": "false", "xformat": "HH:mm:ss", "interpolate": "linear", "nodata": "", "dot": false, "ymin": "", "ymax": "", "removeOlder": 1, "removeOlderPoints": "", "removeOlderUnit": "3600", "cutout": 0, "useOneColor": false, "useUTC": false, "colors": [ "#1f77b4", "#aec7e8", "#ff7f0e", "#000000", "#000000", "#000000", "#000000", "#000000", "#000000" ], "outputs": 1, "useDifferentColor": false, "className": "", "x": 440, "y": 520, "wires": [ [] ] }, { "id": "00b051fd265dfa3b", "type": "ui_text", "z": "fc669d4eef925a6b", "group": "mqtt-group", "order": 2, "width": 0, "height": 0, "name": "", "label": "Last message", "format": "{{msg.payload}}", "layout": "row-spread", "x": 440, "y": 560, "wires": [] }, { "id": "622993aa03c05a2b", "type": "ui_text_input", "z": "fc669d4eef925a6b", "name": "", "label": "Message to send", "tooltip": "", "group": "mqtt-group", "order": 3, "width": "0", "height": "0", "passthru": true, "mode": "text", "delay": "0", "topic": "", "sendOnBlur": true, "className": "", "topicType": "str", "x": 210, "y": 320, "wires": [ [ "5dd17922f697f3b5" ] ] }, { "id": "9d705b8a53321163", "type": "ui_template", "z": "fc669d4eef925a6b", "group": "60ef3d655ef605b5", "name": "Welcome Animation", "order": 0, "width": 0, "height": 0, "format": "<!-- Global Container -->\n<div class=\"center-container\">\n <div class=\"content-box\">\n <!-- Logos -->\n <div class=\"logos\">\n <img src=\"/node-red_logo.png\" alt=\"Node-RED\" style=\"height: 130px;\">\n <img src=\"/trustpoint_logo.png\" alt=\"Trustpoint\" style=\"height: 170px;\">\n </div>\n\n <!-- Title -->\n <h1>Welcome to the Trustpoint Secure Provisioning Dashboard</h1>\n\n <!-- Description -->\n <p>\n This interface allows you to enroll new devices<br>\n and monitor secure MQTT communication using mutual TLS (mTLS).\n </p>\n\n <!-- Buttons -->\n <div>\n <a href=\"#!/Enrollment\"><button class=\"btn\">Go to Enrollment</button></a>\n <a href=\"#!/MQTT%20Secure%20Monitoring\"><button class=\"btn\">Go to Monitoring</button></a>\n <a href=\"#!/About%20the%20project\"><button class=\"btn\">About the Project</button></a>\n </div>\n </div>\n</div>\n\n<!-- CSS -->\n<style>\n @keyframes fadeIn {\n from {\n opacity: 0;\n transform: translateY(-20px);\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n .center-container {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100vh;\n background-color: #ffffff;\n /* fond clair */\n animation: fadeIn 1s ease-in-out;\n }\n\n .content-box {\n text-align: center;\n max-width: 900px;\n padding: 40px;\n }\n\n .logos {\n margin-bottom: 40px;\n }\n\n .logos img {\n height: 130px;\n margin: 0 20px;\n }\n\n .content-box h1 {\n font-size: 45px;\n margin-bottom: 30px;\n color: #000000;\n }\n\n .content-box p {\n font-size: 24px;\n color: #444444;\n margin-bottom: 40px;\n line-height: 1.6;\n }\n\n .btn {\n color: white;\n background-color: #007bff;\n padding: 15px 35px;\n font-size: 17px;\n margin: 10px;\n border-radius: 6px;\n border: none;\n cursor: pointer;\n }\n\n .btn:hover {\n background-color: #0056b3;\n }\n\n /* Fond du menu latéral */\n md-sidenav.md-sidenav-left {\n background-color: #ffffff !important;\n color: #000000 !important;\n }\n \n /* Couleur des liens et icônes */\n md-list-item .nr-dashboard-menuitem span {\n color: #007bff !important; /* ou noir : #000000 */\n font-weight: bold;\n }\n \n /* Couleur des icônes dashboard */\n .nr-dashboard-icon {\n color: #007bff !important;\n }\n</style>\n\n", "storeOutMessages": true, "fwdInMessages": true, "resendOnRefresh": true, "templateScope": "local", "className": "", "x": 120, "y": 60, "wires": [ [] ] }, { "id": "f65344ddac15290b", "type": "ui_template", "z": "fc669d4eef925a6b", "group": "76f842c693439b31", "name": "About", "order": 0, "width": 0, "height": 0, "format": "<div style=\"text-align: center; padding: 30px;\">\n <h2 style=\"color: white;\">Project Overview</h2><br>\n <p style=\"color: #ccc; font-size: 18px; max-width: 700px; margin: auto; line-height: 1.6;\">\n This application demonstrates a full secure device provisioning workflow using EST protocols and MQTT with\n mutual TLS (mTLS). Below is QR code linking to explanations of each phase.\n </p>\n\n <!-- QR Codes Section -->\n <div style=\"display:\n\ncommon\ninject\ndebug\ncomplete\ncatch\nstatus\nlink in\nlink call\nlink out\ncomment\nfunction\nfunction\nswitch\nchange\nrange\ntemplate\ndelay\ntrigger\nexec\nfilter\nfunction -\nnpm\nrandom\nsmooth\nnetwork\nmqtt in\nmqtt out\nhttp in\nhttp response\nhttp request\nwebsocket in\nwebsocket\nout\ntcp in\ntcp out\ntcp request\nudp in\nudp out\nserial in\nserial out\nserial request\nserial control\nping\noutput\nplay audio\nsequence\nsplit\njoin\nsort\nbatch\nparser\ncsv\nhtml\njson\nxml\nyaml\nbuffer - parser\nbuffer - maker\nstorage\nwrite file\nread file\nwatch\nTrustpoint\ntrustpoint -\nkeygen\ntrustpoint -\ncreate - csr\ntrustpoint -\nsimpleenroll\ntrustpoint -\nsimplereenroll\ntrustpoint -\ncacerts\ntrustpoint -\nstore\ndashboard\nbutton\ndropdown\nswitch\nslider\nnumeric\ntext input\ndate picker\ncolour picker\nform\ntext\ngauge\nchart\naudio out\nnotification\nui control\ntemplate\ntable\nRaspberry Pi\nrpi - gpio in\nrpi - gpio out\nrpi - mouse\nrpi - keyboard\n\ndashboard\nLayout\nSite\nTheme\n flex; flex-wrap: wrap; justify-content: center; gap: 30px; margin-top: 40px;\">\n <div>\n <h3 style=\"color: #00bfff;\">github README QR</h3><br>\n <img src=\"https://api.qrserver.com/v1/create-qr-code/?size=220x220&data=https://github.com/ibrahimsambare/node-red-contrib-trustpoint/blob/main/README.md\n\" alt=\"README QR\" style=\"height: 160px;\">\n </div>\n </div>\n</div>\n", "storeOutMessages": true, "fwdInMessages": true, "resendOnRefresh": true, "templateScope": "local", "className": "", "x": 70, "y": 120, "wires": [ [] ] }, { "id": "882226ff316bf8d7", "type": "ui_template", "z": "fc669d4eef925a6b", "group": "", "name": "Template Scope ", "order": 0, "width": 0, "height": 0, "format": "<style>\n /* Changer le fond du menu latéral */\n md-sidenav.md-sidenav-left {\n background-color: #ffffff !important;\n /* blanc */\n color: #000000 !important;\n /* texte noir */\n }\n\n /* Couleur des textes dans le menu */\n md-list-item .nr-dashboard-menuitem span {\n color: #000000 !important;\n font-weight: 500;\n }\n\n /* Icônes dans le menu */\n .nr-dashboard-icon {\n color: #007bff !important;\n /* bleu clair élégant */\n }\n\n /* Texte du titre Node-RED Dashboard */\n .nr-dashboard-theme .md-toolbar-tools {\n color: #ffffff !important;\n /* texte blanc */\n }\n\n /* Toolbar (haut) */\n md-toolbar {\n background-color: #007bff !important;\n /* bleu clair */\n }\n</style>", "storeOutMessages": true, "fwdInMessages": true, "resendOnRefresh": true, "templateScope": "global", "className": "", "x": 100, "y": 200, "wires": [ [] ] }, { "id": "6e5c554bc3349843", "type": "trustpoint-cacerts", "z": "fc669d4eef925a6b", "name": "Get CA Certs", "estUrl": "https://localhost/.well-known/est/arburg/cacerts/", "estUrl_fieldType": "str", "x": 190, "y": 880, "wires": [ [ "505fe46bb0bd25b2", "bd3a070088207e3b" ] ] }, { "id": "3082ca62a2fe2243", "type": "debug", "z": "fc669d4eef925a6b", "name": "Debug Store CA Certs", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 460, "y": 940, "wires": [] }, { "id": "c668d94ef9256a6b", "type": "ui_button", "z": "fc669d4eef925a6b", "name": "Fetch CA Button", "group": "64e68462e75b7176", "order": 1, "width": "16", "height": 1, "passthru": false, "label": "Fetch CA Certs", "tooltip": "Download CA from Trustpoint", "color": "", "bgcolor": "#007bff", "className": "<h3 style=\"text-align: center;\"></h3><br><br><br>", "icon": "cloud-download", "payload": "", "payloadType": "str", "topic": "", "topicType": "str", "x": 210, "y": 820, "wires": [ [ "6e5c554bc3349843" ] ] }, { "id": "819f3318ef1aaca1", "type": "ui_template", "z": "fc669d4eef925a6b", "group": "64e68462e75b7176", "name": "CA certs", "order": 1, "width": "0", "height": "0", "format": "\n", "storeOutMessages": true, "fwdInMessages": true, "resendOnRefresh": true, "templateScope": "local", "className": "", "x": 100, "y": 760, "wires": [ [] ] }, { "id": "4843cdf8f1cff114", "type": "ui_text", "z": "fc669d4eef925a6b", "group": "64e68462e75b7176", "order": 2, "width": 0, "height": 0, "name": "Text", "label": "Stored with success & Path is ", "format": "{{msg.payload.path}}", "layout": "row-right", "className": "text-center", "style": true, "font": "", "fontSize": 16, "color": "#000000", "x": 410, "y": 1000, "wires": [] }, { "id": "505fe46bb0bd25b2", "type": "ui_template", "z": "fc669d4eef925a6b", "group": "64e68462e75b7176", "name": "", "order": 4, "width": "16", "height": "19", "format": "<md-card>\n <md-card-title>\n <span class=\"md-headline\">CA Certificate (PEM)</span>\n </md-card-title>\n\n <md-card-content layout=\"column\">\n <textarea\n id=\"certDisplay\"\n rows=\"20\"\n readonly\n style=\"width:100%; font-family: monospace; background-color: #f4f4f4; color: #222; padding: 12px; border-radius: 6px; border: 1px solid #ccc; resize: vertical;\">\n{{msg.payload.certificate}}\n </textarea>\n <br>\n <md-button class=\"md-raised md-primary\" onclick=\"copyCert()\">📋 Copier le certificat</md-button>\n <span id=\"copyStatus\" style=\"margin-left:10px; color:green;\"></span>\n </md-card-content>\n</md-card>\n\n<script>\n function copyCert() {\n var textarea = document.getElementById(\"certDisplay\");\n textarea.select();\n document.execCommand(\"copy\");\n\n // Message visuel de confirmation\n var status = document.getElementById(\"copyStatus\");\n status.textContent = \"✅ Copié !\";\n setTimeout(() => status.textContent = \"\", 2000);\n }\n</script>", "storeOutMessages": true, "fwdInMessages": true, "resendOnRefresh": true, "templateScope": "local", "className": "", "x": 420, "y": 880, "wires": [ [] ] }, { "id": "c44411bc7c42ad6e", "type": "ui_form", "z": "fc669d4eef925a6b", "name": "Start Provisioning Form Enrollment", "label": "Provision a Device", "group": "ui_group_enroll", "order": 1, "width": 0, "height": 0, "options": [ { "label": "Device ID", "value": "deviceId", "type": "text", "required": true, "rows": null }, { "label": "Username", "value": "estUsername", "type": "text", "required": true, "rows": null }, { "label": "Password", "value": "estPassword", "type": "password", "required": true, "rows": null } ], "formValue": { "deviceId": "", "estUsername": "", "estPassword": "" }, "payload": "", "submit": "Start Provisioning", "cancel": "Cancel", "topic": "", "topicType": "str", "splitLayout": false, "className": "", "x": 260, "y": 1120, "wires": [ [ "c1ade04a02f81c3d" ] ] }, { "id": "c1ade04a02f81c3d", "type": "trustpoint-keygen", "z": "fc669d4eef925a6b", "name": "Generate Keys", "algorithm": "RSA", "keySize": "2048", "persist": false, "filenamePrefix": "", "filenamePrefix_fieldType": "str", "x": 200, "y": 1180, "wires": [ [ "c55d9c69d5a7d4ba", "a75f19a9d350ff04" ] ] }, { "id": "e3e65e6c988dc106", "type": "trustpoint-create-csr", "z": "fc669d4eef925a6b", "name": "Create CSR", "privateKey": "", "privateKey_fieldType": "str", "cn": "", "o": "", "ou": "", "san": "", "x": 190, "y": 1360, "wires": [ [ "124bc60ba1d3d4da", "7c68d05b3aa27f4f" ] ] }, { "id": "124bc60ba1d3d4da", "type": "trustpoint-build-enroll-payload", "z": "fc669d4eef925a6b", "name": "Build Enroll Payload", "x": 220, "y": 1420, "wires": [ [ "56aa927683c7be6a", "fc44c286e3962000" ] ] }, { "id": "56aa927683c7be6a", "type": "trustpoint-simpleenroll", "z": "fc669d4eef925a6b", "name": "Enroll Device", "estHost": "https://127.0.0.1:443/.well-known/est/arburg/domaincredential/simpleenroll/", "useBasic": false, "username": "", "password": "", "useMtls": false, "clientCert": "", "clientCert_fieldType": "str", "clientKey": "", "clientKey_fieldType": "str", "rejectUnauthorized": false, "x": 190, "y": 1480, "wires": [ [ "019f5049e2aef1a5", "e86b4b3e40e3b454" ] ] }, { "id": "b452e4949e941d58", "type": "ui_template", "z": "fc669d4eef925a6b", "group": "ui_group_enroll", "name": "Certificate Metadata Enrollment", "order": 2, "width": 0, "height": 0, "format": "<div style=\"padding:10px\">\n <h4>🎓 Certificate Metadata</h4>\n <p><b>Device ID:</b> {{msg.keystore.deviceId}}</p>\n <p><b>Subject CN:</b> {{msg.certMeta.subjectCN}}</p>\n <p><b>Issuer CN:</b> {{msg.certMeta.issuerCN}}</p>\n <p><b>Valid From:</b> {{msg.certMeta.validFrom}}</p>\n <p><b>Valid To:</b> {{msg.certMeta.validTo}}</p>\n <p><b>Key Type:</b> {{msg.certMeta.keyType}}</p>\n <p><b>Key Size/Curve:</b> {{msg.certMeta.keySize || msg.certMeta.curve}}</p>\n</div>\n<div style=\"margin-top:20px\">\n <h4>📄 Full Certificate (PEM)</h4>\n <pre\n style=\"white-space: pre-wrap; word-break: break-word; background-color: #f7f7f7; padding: 10px; border: 1px solid #ccc;\">\n{{msg.certificate}}\n </pre>\n</div>", "storeOutMessages": true, "fwdInMessages": true, "resendOnRefresh": true, "templateScope": "local", "className": "", "x": 490, "y": 1600, "wires": [ [] ] }, { "id": "2599cdc785705c1c", "type": "debug", "z": "fc669d4eef925a6b", "name": "Enrollment Debug", "active": true, "console": "false", "complete": "true", "x": 450, "y": 1540, "wires": [] }, { "id": "c55d9c69d5a7d4ba", "type": "trustpoint-prepare-keystore", "z": "fc669d4eef925a6b", "name": "Prepare Keystore", "x": 210, "y": 1240, "wires": [ [ "4307a35328b155b9", "dd22ec524cc791e5" ] ] }, { "id": "4307a35328b155b9", "type": "trustpoint-store-key", "z": "fc669d4eef925a6b", "name": "", "filePath": "/home/pi/.node-red/keys", "filePathType": "str", "x": 180, "y": 1300, "wires": [ [ "e3e65e6c988dc106", "be045bef4373d8b1" ] ] }, { "id": "019f5049e2aef1a5", "type": "trustpoint-store-certificate", "z": "fc669d4eef925a6b", "name": "", "filePath": "", "filePath_fieldType": "str", "x": 200, "y": 1540, "wires": [ [ "b452e4949e941d58", "2599cdc785705c1c" ] ] }, { "id": "7c68d05b3aa27f4f", "type": "debug", "z": "fc669d4eef925a6b", "name": "csr debug", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 420, "y": 1360, "wires": [] }, { "id": "fc44c286e3962000", "type": "debug", "z": "fc669d4eef925a6b", "name": "build enroll payload debug", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 480, "y": 1420, "wires": [] }, { "id": "be045bef4373d8b1", "type": "debug", "z": "fc669d4eef925a6b", "name": "store-key-debug", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 450, "y": 1300, "wires": [] }, { "id": "e86b4b3e40e3b454", "type": "debug", "z": "fc669d4eef925a6b", "name": "enroll debug", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 430, "y": 1480, "wires": [] }, { "id": "a75f19a9d350ff04", "type": "debug", "z": "fc669d4eef925a6b", "name": "geerate key debug ", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 450, "y": 1180, "wires": [] }, { "id": "dd22ec524cc791e5", "type": "debug", "z": "fc669d4eef925a6b", "name": "prepare keystore debug", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 470, "y": 1240, "wires": [] }, { "id": "ec6fd9a21020733d", "type": "ui_form", "z": "fc669d4eef925a6b", "name": "Start Provisioning Form Reenrollment", "label": "Reprovision a Device", "group": "018b664f4db43267", "order": 1, "width": 0, "height": 0, "options": [ { "label": "Device ID", "value": "deviceId", "type": "text", "required": true, "rows": null }, { "label": "Username", "value": "estUsername", "type": "text", "required": true, "rows": null }, { "label": "Password", "value": "estPassword", "type": "password", "required": true, "rows": null } ], "formValue": { "deviceId": "", "estUsername": "", "estPassword": "" }, "payload": "", "submit": "Start Provisioning", "cancel": "Cancel", "topic": "", "topicType": "str", "splitLayout": false, "className": "", "x": 270, "y": 1720, "wires": [ [ "dfe15302592d8726" ] ] }, { "id": "dfe15302592d8726", "type": "trustpoint-keygen", "z": "fc669d4eef925a6b", "name": "Generate Keys", "algorithm": "RSA", "keySize": "2048", "persist": false, "filenamePrefix": "", "filenamePrefix_fieldType": "str", "x": 200, "y": 1780, "wires": [ [ "f65b8c983af2f620" ] ] }, { "id": "ed53ce1007ceb24d", "type": "trustpoint-create-csr", "z": "fc669d4eef925a6b", "name": "Create CSR", "privateKey": "", "privateKey_fieldType": "str", "cn": "", "o": "", "ou": "", "san": "", "x": 190, "y": 1960, "wires": [ [ "fcabd74c8055e95b" ] ] }, { "id": "fcabd74c8055e95b", "type": "trustpoint-build-enroll-payload", "z": "fc669d4eef925a6b", "name": "Build ReEnroll Payload", "x": 220, "y": 2020, "wires": [ [ "3ed9ae1801020f67" ] ] }, { "id": "4baaa404bbcd7abe", "type": "ui_template", "z": "fc669d4eef925a6b", "group": "018b664f4db43267", "name": "Certificate Metadata Renrollment", "order": 2, "width": 0, "height": 0, "format": "<div style=\"padding:10px\">\n <h4>🎓 Certificate Metadata</h4>\n <p><b>Device ID:</b> {{msg.keystore.deviceId}}</p>\n <p><b>Subject CN:</b> {{msg.certMeta.subjectCN}}</p>\n <p><b>Issuer CN:</b> {{msg.certMeta.issuerCN}}</p>\n <p><b>Valid From:</b> {{msg.certMeta.validFrom}}</p>\n <p><b>Valid To:</b> {{msg.certMeta.validTo}}</p>\n <p><b>Key Type:</b> {{msg.certMeta.keyType}}</p>\n <p><b>Key Size/Curve:</b> {{msg.certMeta.keySize || msg.certMeta.curve}}</p>\n</div>\n<div style=\"margin-top:20px\">\n <h4>📄 Full Certificate (PEM)</h4>\n <pre\n style=\"white-space: pre-wrap; word-break: break-word; background-color: #f7f7f7; padding: 10px; border: 1px solid #ccc;\">\n{{msg.certificate}}\n </pre>\n</div>", "storeOutMessages": true, "fwdInMessages": true, "resendOnRefresh": true, "templateScope": "local", "className": "", "x": 480, "y": 2180, "wires": [ [] ] }, { "id": "be5aebe899dfeca4", "type": "debug", "z": "fc669d4eef925a6b", "name": "Enrollment Debug", "active": true, "console": "false", "complete": "true", "x": 430, "y": 2140, "wires": [] }, { "id": "f65b8c983af2f620", "type": "trustpoint-prepare-keystore", "z": "fc669d4eef925a6b", "name": "Prepare Keystore", "x": 210, "y": 1840, "wires": [ [ "db050ccc2d23b595" ] ] }, { "id": "db050ccc2d23b595", "type": "trustpoint-store-key", "z": "fc669d4eef925a6b", "name": "", "filePath": "/home/pi/.node-red/keys", "filePathType": "str", "x": 180, "y": 1900, "wires": [ [ "ed53ce1007ceb24d" ] ] }, { "id": "4ae68266f236375d", "type": "trustpoint-store-certificate", "z": "fc669d4eef925a6b", "name": "", "filePath": "", "filePath_fieldType": "str", "x": 200, "y": 2140, "wires": [ [ "4baaa404bbcd7abe", "be5aebe899dfeca4" ] ] }, { "id": "3ed9ae1801020f67", "type": "trustpoint-simpleenroll", "z": "fc669d4eef925a6b", "name": "Reenroll Device", "estHost": "https://127.0.0.1:443/.well-known/est/arburg/domaincredential/simpleenroll/", "useBasic": false, "username": "", "password": "", "useMtls": false, "clientCert": "", "clientCert_fieldType": "str", "clientKey": "", "clientKey_fieldType": "str", "rejectUnauthorized": false, "x": 200, "y": 2080, "wires": [ [ "4ae68266f236375d" ] ] }, { "id": "498d549ece5cec26", "type": "comment", "z": "fc669d4eef925a6b", "name": "MQTT Section", "info": "", "x": 110, "y": 260, "wires": [] }, { "id": "ed2d257ea5b6505a", "type": "comment", "z": "fc669d4eef925a6b", "name": "Get CA Section", "info": "", "x": 120, "y": 700, "wires": [] }, { "id": "ac42fe66f07656b4", "type": "comment", "z": "fc669d4eef925a6b", "name": "Enrollment Section", "info": "", "x": 130, "y": 1060, "wires": [] }, { "id": "c873abf1cc5b9fba", "type": "comment", "z": "fc669d4eef925a6b", "name": "Reenrollment Section", "info": "", "x": 140, "y": 1660, "wires": [] }, { "id": "bd3a070088207e3b", "type": "trustpoint-store-ca", "z": "fc669d4eef925a6b", "name": "", "filePath": "", "filePathType": "str", "x": 180, "y": 940, "wires": [ [ "3082ca62a2fe2243", "4843cdf8f1cff114" ] ] }, { "id": "1ac9a04b07ecbdcc", "type": "ui_spacer", "z": "fc669d4eef925a6b", "name": "spacer", "group": "64e68462e75b7176", "order": 1, "width": 1, "height": 1 }, { "id": "e9d5e15cc55fcbb5", "type": "mqtt-broker", "name": "mosquitto_TLS", "broker": "127.0.0.1", "port": "8883", "tls": "e3118664bc79b558", "clientid": "", "autoConnect": true, "usetls": true, "protocolVersion": 4, "keepalive": 60, "cleansession": true, "autoUnsubscribe": true, "birthTopic": "", "birthQos": "0", "birthRetain": "false", "birthPayload": "", "birthMsg": {}, "closeTopic": "", "closeQos": "0", "closeRetain": "false", "closePayload": "", "closeMsg": {}, "willTopic": "", "willQos": "0", "willRetain": "false", "willPayload": "", "willMsg": {}, "userProps": "", "sessionExpiry": "" }, { "id": "mqtt-group", "type": "ui_group", "name": "MQTT Monitor", "tab": "mqtt-tab", "order": 1, "disp": true, "width": "16", "collapse": false, "className": "" }, { "id": "60ef3d655ef605b5", "type": "ui_group", "name": "Intro", "tab": "e29cc6b21e4af0ec", "order": 1, "disp": true, "width": "16", "collapse": true, "className": "" }, { "id": "76f842c693439b31", "type": "ui_group", "name": "About", "tab": "ed04e5a5ae24fd77", "order": 1, "disp": true, "width": "16", "collapse": false, "className": "" }, { "id": "64e68462e75b7176", "type": "ui_group", "name": "Get CA", "tab": "c7d1f3d0b0cc5866", "order": 1, "disp": true, "width": "16", "collapse": false, "className": "<div style=\"background:#f7f7f7; border:1px solid #ccc; padding:10px; font-family:monospace; white-space:pre-wrap; max-height:300px; overflow:auto; font-size:13px;\"> {{msg.payload}} </div>" }, { "id": "ui_group_enroll", "type": "ui_group", "name": "Enroll Device", "tab": "ui_tab_enroll", "order": 1, "disp": true, "width": 20, "collapse": false, "className": "" }, { "id": "018b664f4db43267", "type": "ui_group", "name": "Reenroll Device", "tab": "3920990baa0e59a3", "order": 1, "disp": true, "width": "20", "collapse": false, "className": "" }, { "id": "e3118664bc79b558", "type": "tls-config", "name": "", "cert": "/etc/mosquitto/certs/client.crt", "key": "/etc/mosquitto/certs/client.key", "ca": "/etc/mosquitto/certs/ca.crt", "certname": "", "keyname": "", "caname": "", "servername": "", "verifyservercert": true, "alpnprotocol": "" }, { "id": "mqtt-tab", "type": "ui_tab", "name": "MQTT Secure Monitoring", "icon": "dashboard", "order": 5 }, { "id": "e29cc6b21e4af0ec", "type": "ui_tab", "name": "Welcome", "icon": "dashboard", "order": 1, "disabled": false, "hidden": false }, { "id": "ed04e5a5ae24fd77", "type": "ui_tab", "name": "About the project", "icon": "dashboard", "order": 2, "disabled": false, "hidden": false }, { "id": "c7d1f3d0b0cc5866", "type": "ui_tab", "name": "Get CA", "icon": "dashboard", "order": 3, "disabled": false, "hidden": false }, { "id": "ui_tab_enroll", "type": "ui_tab", "name": "Enrollment", "icon": "dashboard", "order": 4, "disabled": false, "hidden": false }, { "id": "3920990baa0e59a3", "type": "ui_tab", "name": "Reenrollment", "icon": "dashboard", "order": 6, "disabled": false, "hidden": false } ]