fix(nodes): apply a rotated master mTLS certificate without restarting the panel (#6194)

* fix(mtls): invalidate pooled clients after credential rotation

* fix(mtls): make connection reload read-only

---------

Co-authored-by: n0ctal <293235942+n0ctal@users.noreply.github.com>
This commit is contained in:
n0ctal
2026-08-15 19:03:42 +05:00
committed by GitHub
parent 1230559e69
commit 7ecd88b9e3
24 changed files with 747 additions and 101 deletions
+2 -1
View File
@@ -974,7 +974,8 @@
"updateStarted": "بدأ تحديث اللوحة",
"updateResult": "تم بدء التحديث على {ok} عقدة، فشل {failed}",
"updateNoneEligible": "اختر عقدة واحدة على الأقل متصلة ومفعّلة",
"saveMtls": "حفظ mTLS النود"
"saveMtls": "حفظ mTLS النود",
"reloadMtls": "Reload master mTLS credential"
},
"tlsVerifyMode": "التحقق من TLS",
"tlsVerifyModeHint": "كيف يتحقق اللوحة من شهادة HTTPS الخاصة بالعقدة. التثبيت أو التخطّي مخصّصان للشهادات الموقّعة ذاتيًا (عُقد https فقط).",
+2 -1
View File
@@ -1091,7 +1091,8 @@
"updateStarted": "Panel update started",
"updateResult": "Update triggered on {ok} node(s), {failed} failed",
"updateNoneEligible": "Select at least one online, enabled node",
"saveMtls": "Save node mTLS"
"saveMtls": "Save node mTLS",
"reloadMtls": "Reload master mTLS credential"
},
"tlsVerifyMode": "TLS verification",
"tlsVerifyModeHint": "How the panel validates the node's HTTPS certificate. Pin or Skip are for self-signed certs (https nodes only).",
+2 -1
View File
@@ -974,7 +974,8 @@
"updateStarted": "Actualización del panel iniciada",
"updateResult": "Actualización iniciada en {ok} nodo(s), {failed} fallaron",
"updateNoneEligible": "Selecciona al menos un nodo en línea y habilitado",
"saveMtls": "Guardar mTLS del nodo"
"saveMtls": "Guardar mTLS del nodo",
"reloadMtls": "Reload master mTLS credential"
},
"tlsVerifyMode": "Verificación TLS",
"tlsVerifyModeHint": "Cómo valida el panel el certificado HTTPS del nodo. Fijar u Omitir son para certificados autofirmados (solo nodos https).",
+2 -1
View File
@@ -974,7 +974,8 @@
"updateStarted": "به‌روزرسانی پنل آغاز شد",
"updateResult": "به‌روزرسانی روی {ok} نود آغاز شد، {failed} ناموفق",
"updateNoneEligible": "حداقل یک نود آنلاین و فعال انتخاب کنید",
"saveMtls": "ذخیره mTLS نود"
"saveMtls": "ذخیره mTLS نود",
"reloadMtls": "Reload master mTLS credential"
},
"tlsVerifyMode": "اعتبارسنجی TLS",
"tlsVerifyModeHint": "اینکه پنل گواهی HTTPS نود را چطور بررسی کند. Pin یا Skip برای گواهی‌های self-signed است (فقط نودهای https).",
+2 -1
View File
@@ -974,7 +974,8 @@
"updateStarted": "Pembaruan panel dimulai",
"updateResult": "Pembaruan dipicu pada {ok} node, {failed} gagal",
"updateNoneEligible": "Pilih minimal satu node online dan aktif",
"saveMtls": "Simpan mTLS node"
"saveMtls": "Simpan mTLS node",
"reloadMtls": "Reload master mTLS credential"
},
"tlsVerifyMode": "Verifikasi TLS",
"tlsVerifyModeHint": "Cara panel memvalidasi sertifikat HTTPS node. Pin atau Lewati untuk sertifikat self-signed (hanya node https).",
+2 -1
View File
@@ -974,7 +974,8 @@
"updateStarted": "パネルの更新を開始しました",
"updateResult": "{ok} 個のノードで更新を開始、{failed} 個失敗",
"updateNoneEligible": "オンラインで有効なノードを少なくとも1つ選択してください",
"saveMtls": "ノード mTLS を保存"
"saveMtls": "ノード mTLS を保存",
"reloadMtls": "Reload master mTLS credential"
},
"tlsVerifyMode": "TLS 検証",
"tlsVerifyModeHint": "パネルがノードの HTTPS 証明書を検証する方法。ピン留めやスキップは自己署名証明書向け(https ノードのみ)。",
+2 -1
View File
@@ -974,7 +974,8 @@
"updateStarted": "Atualização do painel iniciada",
"updateResult": "Atualização iniciada em {ok} nó(s), {failed} falharam",
"updateNoneEligible": "Selecione pelo menos um nó online e ativo",
"saveMtls": "Salvar mTLS do nó"
"saveMtls": "Salvar mTLS do nó",
"reloadMtls": "Reload master mTLS credential"
},
"tlsVerifyMode": "Verificação TLS",
"tlsVerifyModeHint": "Como o painel valida o certificado HTTPS do nó. Fixar ou Ignorar são para certificados autoassinados (apenas nós https).",
+2 -1
View File
@@ -974,7 +974,8 @@
"updateStarted": "Обновление панели запущено",
"updateResult": "Обновление запущено на {ok} узлах, {failed} не удалось",
"updateNoneEligible": "Выберите хотя бы один включённый узел в сети",
"saveMtls": "Сохранить mTLS узла"
"saveMtls": "Сохранить mTLS узла",
"reloadMtls": "Reload master mTLS credential"
},
"tlsVerifyMode": "Проверка TLS",
"tlsVerifyModeHint": "Как панель проверяет HTTPS-сертификат узла. Закрепление или Пропуск — для самоподписанных сертификатов (только https-узлы).",
+2 -1
View File
@@ -974,7 +974,8 @@
"updateStarted": "Panel güncellemesi başlatıldı",
"updateResult": "{ok} düğümde güncelleme başlatıldı, {failed} başarısız",
"updateNoneEligible": "En az bir çevrimiçi ve etkin düğüm seçin",
"saveMtls": "Düğüm mTLS kaydet"
"saveMtls": "Düğüm mTLS kaydet",
"reloadMtls": "Reload master mTLS credential"
},
"tlsVerifyMode": "TLS Doğrulaması",
"tlsVerifyModeHint": "Panelin düğümün HTTPS sertifikasını nasıl doğrulayacağını belirler. Sabitle veya Atla, kendinden imzalı sertifikalar içindir (yalnızca https düğümleri).",
+2 -1
View File
@@ -974,7 +974,8 @@
"updateStarted": "Оновлення панелі розпочато",
"updateResult": "Оновлення запущено на {ok} вузлах, {failed} не вдалося",
"updateNoneEligible": "Виберіть принаймні один увімкнений вузол у мережі",
"saveMtls": "Зберегти mTLS вузла"
"saveMtls": "Зберегти mTLS вузла",
"reloadMtls": "Reload master mTLS credential"
},
"tlsVerifyMode": "Перевірка TLS",
"tlsVerifyModeHint": "Як панель перевіряє HTTPS-сертифікат вузла. Закріплення або Пропуск — для самопідписаних сертифікатів (лише https-вузли).",
+2 -1
View File
@@ -974,7 +974,8 @@
"updateStarted": "Đã bắt đầu cập nhật bảng điều khiển",
"updateResult": "Đã kích hoạt cập nhật trên {ok} node, {failed} thất bại",
"updateNoneEligible": "Chọn ít nhất một node trực tuyến và đang bật",
"saveMtls": "Lưu mTLS nút"
"saveMtls": "Lưu mTLS nút",
"reloadMtls": "Reload master mTLS credential"
},
"tlsVerifyMode": "Xác minh TLS",
"tlsVerifyModeHint": "Cách panel xác thực chứng chỉ HTTPS của node. Ghim hoặc Bỏ qua dành cho chứng chỉ tự ký (chỉ node https).",
+2 -1
View File
@@ -974,7 +974,8 @@
"updateStarted": "已开始更新面板",
"updateResult": "已在 {ok} 个节点上触发更新,{failed} 个失败",
"updateNoneEligible": "请至少选择一个在线且已启用的节点",
"saveMtls": "保存节点 mTLS"
"saveMtls": "保存节点 mTLS",
"reloadMtls": "Reload master mTLS credential"
},
"tlsVerifyMode": "TLS 校验",
"tlsVerifyModeHint": "面板如何校验节点的 HTTPS 证书。固定或跳过用于自签名证书(仅 https 节点)。",
+2 -1
View File
@@ -974,7 +974,8 @@
"updateStarted": "已開始更新面板",
"updateResult": "已在 {ok} 個節點上觸發更新,{failed} 個失敗",
"updateNoneEligible": "請至少選擇一個在線且已啟用的節點",
"saveMtls": "儲存節點 mTLS"
"saveMtls": "儲存節點 mTLS",
"reloadMtls": "Reload master mTLS credential"
},
"tlsVerifyMode": "TLS 驗證",
"tlsVerifyModeHint": "面板如何驗證節點的 HTTPS 憑證。釘選或略過用於自簽憑證(僅 https 節點)。",