feat(tls): o painel diz o digest que o registo TLSA tem de carregar

Uma associacao DANE e o SHA-256 sobre o SubjectPublicKeyInfo do certificado
que esta a ser servido. Se o que esta no DNS e o que o servidor apresenta se
afastarem, qualquer remetente que valide DANE recusa o correio -- e nada no
painel dizia porque.

Passa a mostrar o numero, para poder ser comparado com o registo publicado.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Lucas RayanandClaude Opus 5 committed 2026-09-01 12:08:25 -03:00
1 parent c06691a056
commit 712885c091
7 files changed
+86 -3

No files matched your search

+2 -1
View File
@@ -112,7 +112,8 @@
"passwordReset": "Password changed. This user's sessions were signed out.",
"passwordResetWarning": "Signs out every session this user holds, including one open right now.",
"removeTotp": "Remove second factor",
"totpRemoved": "Second factor removed, with its recovery codes."
"totpRemoved": "Second factor removed, with its recovery codes.",
"tlsaDigest": "Digest for the TLSA record (DANE 3 1 1)"
},
"auth": {
"adminLoginTitle": "Admin console",
+2 -1
View File
@@ -112,7 +112,8 @@
"passwordReset": "Contrasena cambiada. Las sesiones de este usuario se cerraron.",
"passwordResetWarning": "Cierra todas las sesiones de este usuario, incluida una abierta ahora.",
"removeTotp": "Quitar segundo factor",
"totpRemoved": "Segundo factor eliminado, con sus codigos de recuperacion."
"totpRemoved": "Segundo factor eliminado, con sus codigos de recuperacion.",
"tlsaDigest": "Digest para el registro TLSA (DANE 3 1 1)"
},
"auth": {
"adminLoginTitle": "Consola de administración",
+2 -1
View File
@@ -112,7 +112,8 @@
"passwordReset": "Palavra-passe alterada. As sessoes deste utilizador foram terminadas.",
"passwordResetWarning": "Termina todas as sessoes deste utilizador, incluindo a que esteja aberta agora.",
"removeTotp": "Remover segundo factor",
"totpRemoved": "Segundo factor removido, com os codigos de recuperacao."
"totpRemoved": "Segundo factor removido, com os codigos de recuperacao.",
"tlsaDigest": "Digest para o registo TLSA (DANE 3 1 1)"
},
"auth": {
"adminLoginTitle": "Console de administração",
@@ -306,6 +306,17 @@ export default function AdminSecurityPage() {
</div>
</div>
{/* The number a TLSA "3 1 1" record has to carry. If DNS and this
disagree, every DANE-validating sender refuses the mail. */}
{tlsStatus.tlsa_digest ? (
<div className="flex flex-col gap-1 rounded-xl bg-dark-card p-3.5 shadow-edge md:col-span-3">
<div className="text-xs text-slate-400">{t("admin.tlsaDigest")}</div>
<div className="break-all font-mono text-[12px] text-slate-200">
{String(tlsStatus.tlsa_digest)}
</div>
</div>
) : null}
<div className="flex flex-col gap-1 rounded-xl bg-dark-card p-3.5 shadow-edge">
<div className="text-xs text-slate-400">{t("admin.mailHost")}</div>
<div className="break-all text-[15px] font-medium text-slate-100">