Package: release.debian.org
Severity: normal
Tags: trixie
X-Debbugs-Cc: [email protected]
Control: affects -1 + src:ejabberd
User: [email protected]
Usertags: pu


[ Reason ]
Let's Encrypt has recently ended the support for TLS Client
Authentication in their certificates, see
https://letsencrypt.org/2025/05/14/ending-tls-client-authentication
and https://blog.prosody.im/2026-letsencrypt-changes/, as well as
Debian bugs #1127369 + #1128568.

This breaks communication with ejabberd servers, as they use the
certificate also in client mode for server-to-server connections.

To permit s2s communication with the new certifcates, both the erlang-p1-tls
package and the ejabberd package must be updated. If the ejabberd-contrib
package is used, that one must also be updated to a version built
against the updated ejabberd package.

[ Impact ]
Without addressing this, federation between XMPP servers (s2s) will become
more and more broken as more and more servers renew certificates which are
then missing the client authentication flag.

[ Tests ]
I have deployed the updated package to my own server together with
updated ejabberd + ejabberd-contrib packages, after which I could
finally contact other ejabberd servers again that already run recent
Let's Encrypt certificates without the client authentication flag.

[ Risks ]
None. Changes are trivial.

[ Checklist ]
  [x] *all* changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in (old)stable
  [x] the issue is verified as fixed in unstable

[ Changes ]
Add patch based on an upstream commit that allows accepting client certificates
without the client purpose flag.

[ Other info ]
The fix is already part of current ejabberd releases and thereby also fixed in
unstable.

I will upload to proposed-updates right away.
diff -Nru ejabberd-24.12/debian/changelog ejabberd-24.12/debian/changelog
--- ejabberd-24.12/debian/changelog     2025-12-27 23:45:41.000000000 +0100
+++ ejabberd-24.12/debian/changelog     2026-03-15 09:24:05.000000000 +0100
@@ -1,3 +1,10 @@
+ejabberd (24.12-3+deb13u2) trixie; urgency=medium
+
+  [ Holger Weiss ]
+  * Ignore cert purpose for incoming s2s connections
+
+ -- Philipp Huebner <[email protected]>  Sun, 15 Mar 2026 09:24:05 +0100
+
 ejabberd (24.12-3+deb13u1) trixie; urgency=medium
 
   * Correctly remove no longer shipped conffile (apparmor profile)
diff -Nru ejabberd-24.12/debian/control ejabberd-24.12/debian/control
--- ejabberd-24.12/debian/control       2025-12-27 23:45:41.000000000 +0100
+++ ejabberd-24.12/debian/control       2026-03-15 08:50:20.000000000 +0100
@@ -32,7 +32,7 @@
                erlang-p1-sqlite3 (>= 1.1.15-2~),
                erlang-p1-stringprep (>= 1.0.30-2~),
                erlang-p1-stun (>= 1.2.15),
-               erlang-p1-tls (>= 1.1.22),
+               erlang-p1-tls (>= 1.1.22-1+deb13u1),
                erlang-p1-utils (>= 1.0.26),
                erlang-p1-xml (>= 1.1.55),
                erlang-p1-xmpp (>= 1.9.4),
@@ -71,7 +71,7 @@
          erlang-p1-pkix (>= 1.0.10-2~),
          erlang-p1-stringprep (>= 1.0.30-2~),
          erlang-p1-stun (>= 1.2.15),
-         erlang-p1-tls (>= 1.1.22),
+         erlang-p1-tls (>= 1.1.22-1+deb13u1),
          erlang-p1-utils (>= 1.0.26),
          erlang-p1-xml (>= 1.1.55),
          erlang-p1-xmpp (>= 1.9.4),
diff -Nru ejabberd-24.12/debian/patches/series 
ejabberd-24.12/debian/patches/series
--- ejabberd-24.12/debian/patches/series        2025-12-27 23:45:41.000000000 
+0100
+++ ejabberd-24.12/debian/patches/series        2026-03-15 08:50:20.000000000 
+0100
@@ -8,3 +8,4 @@
 fix-spelling-errors.patch
 remove_an-trap_macro.patch
 133d52d04023d603283a7796c46bc40ffc7cd3c2.patch
+src.ejabberd_s2s_in.patch
diff -Nru ejabberd-24.12/debian/patches/src.ejabberd_s2s_in.patch 
ejabberd-24.12/debian/patches/src.ejabberd_s2s_in.patch
--- ejabberd-24.12/debian/patches/src.ejabberd_s2s_in.patch     1970-01-01 
01:00:00.000000000 +0100
+++ ejabberd-24.12/debian/patches/src.ejabberd_s2s_in.patch     2026-03-15 
08:50:20.000000000 +0100
@@ -0,0 +1,34 @@
+From 8032358dc720c59c799fa2a7e2153e2b3d2ea2a2 Mon Sep 17 00:00:00 2001
+From: Holger Weiss <[email protected]>
+Date: Sat, 21 Feb 2026 19:35:23 +0100
+Subject: [PATCH] Ignore cert purpose for incoming s2s connections
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Since web browser certificate authority requirements no longer allow for
+including the client purpose flag, let s2s listeners ignore certificate
+purposes when authenticating incoming connections.
+
+Based on upstream commit 72bc9b6c7f6afce7aa671a47eee343cc25b0abcb by
+PaweÅ‚ Chmielowski <[email protected]>.
+---
+ src/ejabberd_s2s_in.erl | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/ejabberd_s2s_in.erl b/src/ejabberd_s2s_in.erl
+index 1af45a16..8a7817cc 100644
+--- a/src/ejabberd_s2s_in.erl
++++ b/src/ejabberd_s2s_in.erl
+@@ -138,7 +138,7 @@ process_closed(#{server := LServer} = State, Reason) ->
+ %%% xmpp_stream_in callbacks
+ %%%===================================================================
+ tls_options(#{tls_options := TLSOpts, lserver := LServer, server_host := 
ServerHost}) ->
+-    ejabberd_s2s:tls_options(LServer, ServerHost, TLSOpts).
++    [override_cert_purpose | ejabberd_s2s:tls_options(LServer, ServerHost, 
TLSOpts)].
+ 
+ tls_required(#{server_host := ServerHost}) ->
+     ejabberd_s2s:tls_required(ServerHost).
+-- 
+2.39.5
+

Reply via email to