Your message dated Sat, 16 May 2026 10:23:16 +0000
with message-id <[email protected]>
and subject line Released with 13.5
has caused the Debian Bug report #1130813,
regarding trixie-pu: package erlang-p1-tls/1.1.22-1+deb13u1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
1130813: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1130813
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: trixie
X-Debbugs-Cc: [email protected]
Control: affects -1 + src:erlang-p1-tls
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 upstream commit as patch which 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 erlang-p1-tls-1.1.22/debian/changelog 
erlang-p1-tls-1.1.22/debian/changelog
--- erlang-p1-tls-1.1.22/debian/changelog       2025-02-09 11:09:55.000000000 
+0100
+++ erlang-p1-tls-1.1.22/debian/changelog       2026-02-10 19:41:06.000000000 
+0100
@@ -1,3 +1,10 @@
+erlang-p1-tls (1.1.22-1+deb13u1) trixie; urgency=medium
+
+  * Add upstream commit which allows accepting client certificates without
+    the sslclient purpose flag (Closes: #1127369)
+
+ -- Philipp Huebner <[email protected]>  Tue, 10 Feb 2026 19:41:06 +0100
+
 erlang-p1-tls (1.1.22-1) unstable; urgency=medium
 
   * New upstream version 1.1.22
diff -Nru 
erlang-p1-tls-1.1.22/debian/patches/f1e55d6d6bdf109ebc48dda880d028c95f349c3b.patch
 
erlang-p1-tls-1.1.22/debian/patches/f1e55d6d6bdf109ebc48dda880d028c95f349c3b.patch
--- 
erlang-p1-tls-1.1.22/debian/patches/f1e55d6d6bdf109ebc48dda880d028c95f349c3b.patch
  1970-01-01 01:00:00.000000000 +0100
+++ 
erlang-p1-tls-1.1.22/debian/patches/f1e55d6d6bdf109ebc48dda880d028c95f349c3b.patch
  2026-02-10 19:41:06.000000000 +0100
@@ -0,0 +1,111 @@
+From f1e55d6d6bdf109ebc48dda880d028c95f349c3b Mon Sep 17 00:00:00 2001
+From: Pawel Chmielowski <[email protected]>
+Date: Mon, 7 Jul 2025 10:13:50 +0200
+Subject: [PATCH] Add flag to allow accepting client cert without sslclient
+ purpose flag
+
+---
+ c_src/fast_tls.c | 22 ++++++++++++++++++++--
+ src/fast_tls.erl |  7 ++++++-
+ 2 files changed, 26 insertions(+), 3 deletions(-)
+
+Index: erlang-p1-tls/c_src/fast_tls.c
+===================================================================
+--- erlang-p1-tls.orig/c_src/fast_tls.c
++++ erlang-p1-tls/c_src/fast_tls.c
+@@ -26,6 +26,7 @@
+ #include <openssl/decoder.h>
+ #include <openssl/provider.h>
+ #endif
++#include <openssl/x509v3.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <stdint.h>
+@@ -263,6 +264,19 @@ static int verify_callback(int preverify
+ }
+ 
+ /*
++ * Override cert purpose, to accept certificates that have only
++ * server purpose flag as client certificate (needed for s2s authentication).
++ */
++static int cert_verify_callback(X509_STORE_CTX *x509, void *ptr) {
++    X509_VERIFY_PARAM *param = X509_STORE_CTX_get0_param(x509);
++    if (param) {
++      X509_VERIFY_PARAM_set_purpose(param, X509_PURPOSE_SSL_SERVER);
++      X509_VERIFY_PARAM_set_trust(param, X509_TRUST_SSL_SERVER);
++    }
++    return X509_verify_cert(x509);
++}
++
++/*
+  * ECDHE is enabled only on OpenSSL 1.0.0e and later.
+  * See http://www.openssl.org/news/secadv_20110906.txt
+  * for details.
+@@ -549,6 +563,7 @@ static int ssl_sni_callback(const SSL *s
+ #define SET_CERTIFICATE_FILE_CONNECT 2
+ #define VERIFY_NONE 0x10000
+ #define COMPRESSION_NONE 0x100000
++#define OVERRIDE_CERT_PURPOSE 0x200000
+ 
+ static ERL_NIF_TERM ssl_error(ErlNifEnv *env, const char *errstr) {
+     size_t rlen;
+@@ -579,6 +594,7 @@ static SSL_CTX *create_new_ctx(char *cer
+                                char *ciphers, unsigned char *dh, size_t 
dh_size,
+                                char *dh_file, char *ca_file,
+                                unsigned int command,
++                               unsigned long flags,
+                                char **err_str) {
+     long verifyopts;
+     int res = 0;
+@@ -650,6 +666,8 @@ static SSL_CTX *create_new_ctx(char *cer
+     SSL_CTX_set_mode(ctx, SSL_MODE_RELEASE_BUFFERS);
+ #endif
+     SSL_CTX_set_verify(ctx, verifyopts, verify_callback);
++    if (flags & OVERRIDE_CERT_PURPOSE)
++        SSL_CTX_set_cert_verify_callback(ctx, cert_verify_callback, NULL);
+ 
+ #ifndef SSL_OP_NO_RENEGOTIATION
+     SSL_CTX_set_info_callback(ctx, &ssl_info_callback);
+@@ -721,7 +739,7 @@ static char *create_ssl_for_cert(char *c
+ 
+         enif_rwlock_rwlock(certs_map_lock);
+         SSL_CTX *ctx = create_new_ctx(cert_file, key_file, ciphers, dh, 
dh_size,
+-                                      dh_file, ca_file, command, &ret);
++                                      dh_file, ca_file, command,options & 
OVERRIDE_CERT_PURPOSE, &ret);
+         if (ret == NULL) {
+             new_info = enif_alloc(sizeof(cert_info_t));
+             if (new_info) {
+@@ -839,7 +857,7 @@ static ERL_NIF_TERM open_nif(ErlNifEnv *
+     state->dh_file = (char*)(state->dh + dh_bin.size + 1);
+     state->ca_file = state->dh_file + dhfile_bin.size + 1;
+     sni = state->ca_file + cafile_bin.size + 1;
+-    state->options = options;
++    state->options = options | (flags & OVERRIDE_CERT_PURPOSE);
+     state->command = command;
+ 
+     memcpy(state->cert_file, certfile_bin.data, certfile_bin.size);
+Index: erlang-p1-tls/src/fast_tls.erl
+===================================================================
+--- erlang-p1-tls.orig/src/fast_tls.erl
++++ erlang-p1-tls/src/fast_tls.erl
+@@ -67,6 +67,7 @@
+ -define(VERIFY_NONE, 16#10000).
+ 
+ -define(COMPRESSION_NONE, 16#100000).
++-define(OVERRIDE_CERT_PURPOSE, 16#200000).
+ 
+ -define(PRINT(Format, Args), io:format(Format, Args)).
+ 
+@@ -148,7 +149,11 @@ tcp_to_tls(TCPSocket, Options) ->
+                      true -> ?COMPRESSION_NONE;
+                      false -> 0
+                  end,
+-        Flags = Flags1 bor Flags2,
++        Flags3 = case lists:member(override_cert_purpose, Options) of
++                     true -> ?OVERRIDE_CERT_PURPOSE;
++                     false -> 0
++                 end,
++        Flags = Flags1 bor Flags2 bor Flags3,
+         Ciphers =
+         case lists:keysearch(ciphers, 1, Options) of
+             {value, {ciphers, C}} ->
diff -Nru erlang-p1-tls-1.1.22/debian/patches/series 
erlang-p1-tls-1.1.22/debian/patches/series
--- erlang-p1-tls-1.1.22/debian/patches/series  1970-01-01 01:00:00.000000000 
+0100
+++ erlang-p1-tls-1.1.22/debian/patches/series  2026-02-10 19:41:06.000000000 
+0100
@@ -0,0 +1 @@
+f1e55d6d6bdf109ebc48dda880d028c95f349c3b.patch

--- End Message ---
--- Begin Message ---
Package: release.debian.org
Version: 13.5

This update has been released as part of Debian 13.5.

--- End Message ---

Reply via email to