-
Notifications
You must be signed in to change notification settings - Fork 3
Closed
Description
In ejabberd compiled with Erlang/OTP 28.0, requesting a certificate using ACME crashes with this message:
2025-06-04 10:17:37.549313+02:00 [error] ** Generic server ejabberd_acme terminating
** Last message in was {request,[<<"example.myserver.com">>]}
** When Server state == {state}
** Reason for termination ==
** {function_clause,
[{public_key,get_asn1_module,
['SubjectAltName'],
[{file,"public_key.erl"},{line,576}]},
{public_key,der_encode,2,[{file,"public_key.erl"},{line,804}]},
{p1_acme,generate_csr,2,
[{file,
"/home/admin/ejabberd/_build/default/lib/p1_acme/src/p1_acme.erl"},
{line,770}]},
2025-06-04 10:17:37.549313+02:00 [error] ** Generic server ejabberd_acme terminating
** Last message in was {request,[<<"example.myserver.com">>]}
** When Server state == {state}
** Reason for termination ==
** {function_clause,
[{public_key,get_asn1_module,
['SubjectAltName'],
[{file,"public_key.erl"},{line,576}]},
{public_key,der_encode,2,[{file,"public_key.erl"},{line,804}]},
{p1_acme,generate_csr,2,
[{file,
"/home/admin/ejabberd/_build/default/lib/p1_acme/src/p1_acme.erl"},
{line,770}]},
{p1_acme,generate_csr,1,
[{file,
"/home/admin/ejabberd/_build/default/lib/p1_acme/src/p1_acme.erl"},
{line,807}]},
{p1_acme,request_certificate,2,
[{file,
"/home/admin/ejabberd/_build/default/lib/p1_acme/src/p1_acme.erl"},
{line,392}]},
{ejabberd_acme,issue_request,7,
[{file,"/home/admin/ejabberd/src/ejabberd_acme.erl"},{line,230}]},
{ejabberd_acme,handle_call,3,
[{file,"/home/admin/ejabberd/src/ejabberd_acme.erl"},{line,125}]},
{gen_server,try_handle_call,4,[{file,"gen_server.erl"},{line,2470}]}]}
** Client <0.3201.0> stacktrace
** [{gen,do_call,4,[{file,"gen.erl"},{line,262}]},
{gen_server,call,3,[{file,"gen_server.erl"},{line,1297}]},
{ejabberd_acme,request_certificate,1,
[{file,"/home/admin/ejabberd/src/ejabberd_acme.erl"},
{line,492}]},
{ejabberd_ctl,call_command,4,
[{file,"/home/admin/ejabberd/src/ejabberd_ctl.erl"},
{line,358}]},
{ejabberd_ctl,try_call_command,4,
[{file,"/home/admin/ejabberd/src/ejabberd_ctl.erl"},
{line,319}]},
{ejabberd_ctl,process2,4,
[{file,"/home/admin/ejabberd/src/ejabberd_ctl.erl"},
{line,259}]},
{ejabberd_ctl,process,2,
[{file,"/home/admin/ejabberd/src/ejabberd_ctl.erl"},
{line,237}]},
{erpc,execute_call,4,[{file,"erpc.erl"},{line,1262}]}]
2025-06-04 10:17:37.550900+02:00 [error] CRASH REPORT:
crasher:
initial call: ejabberd_acme:init/1
pid: <0.1693.0>
registered_name: ejabberd_acme
exception error: no function clause matching
public_key:get_asn1_module('SubjectAltName') (public_key.erl:576)
in function public_key:der_encode/2 (public_key.erl:804)
in call from p1_acme:generate_csr/2 (/home/admin/ejabberd/_build/default/lib/p1_acme/src/p1_acme.erl:770)
in call from p1_acme:generate_csr/1 (/home/admin/ejabberd/_build/default/lib/p1_acme/src/p1_acme.erl:807)
in call from p1_acme:request_certificate/2 (/home/admin/ejabberd/_build/default/lib/p1_acme/src/p1_acme.erl:392)
in call from ejabberd_acme:issue_request/7 (/home/admin/ejabberd/src/ejabberd_acme.erl:230)
in call from ejabberd_acme:handle_call/3 (/home/admin/ejabberd/src/ejabberd_acme.erl:125)
in call from gen_server:try_handle_call/4 (gen_server.erl:2470)
ancestors: [ejabberd_sup,<0.1332.0>]
message_queue_len: 0
messages: []
links: [<0.1561.0>]
dictionary: [{yconf_ctx,[]}]
trap_exit: true
status: running
heap_size: 4185
stack_size: 29
reductions: 2969654
neighbours:
2025-06-04 10:17:37.568383+02:00 [error] SUPERVISOR REPORT:
supervisor: {local,ejabberd_sup}
errorContext: child_terminated
reason: {function_clause,
[{public_key,get_asn1_module,
['SubjectAltName'],
[{file,"public_key.erl"},{line,576}]},
{public_key,der_encode,2,
[{file,"public_key.erl"},{line,804}]},
{p1_acme,generate_csr,2,
[{file,
"/home/admin/ejabberd/_build/default/lib/p1_acme/src/p1_acme.erl"},
{line,770}]},
{p1_acme,generate_csr,1,
[{file,
"/home/admin/ejabberd/_build/default/lib/p1_acme/src/p1_acme.erl"},
{line,807}]},
{p1_acme,request_certificate,2,
[{file,
"/home/admin/ejabberd/_build/default/lib/p1_acme/src/p1_acme.erl"},
{line,392}]},
{ejabberd_acme,issue_request,7,
[{file,"/home/admin/ejabberd/src/ejabberd_acme.erl"},
{line,230}]},
{ejabberd_acme,handle_call,3,
[{file,"/home/admin/ejabberd/src/ejabberd_acme.erl"},
{line,125}]},
{gen_server,try_handle_call,4,
[{file,"gen_server.erl"},{line,2470}]}]}
offender: [{pid,<0.1693.0>},
{id,ejabberd_acme},
{mfargs,{ejabberd_acme,start_link,[]}},
{restart_type,permanent},
{significant,false},
{shutdown,60000},
{child_type,worker}]
When using Erlang/OTP 28.0.1, the error moves to another line:
2025-07-04 12:45:06.121116+02:00 [error] ** Generic server ejabberd_acme terminating
** Last message in was {request,[<<"temp-acme.process-one.net">>]}
** When Server state == {state}
** Reason for termination ==
** {function_clause,
[{public_key,get_asn1_module,
['ExtensionRequest'],
[{file,"public_key.erl"},{line,590}]},
{public_key,der_encode,2,[{file,"public_key.erl"},{line,833}]},
{p1_acme,generate_csr,2,
[{file,
"/home/admin/ejabberd2801/_build/default/lib/p1_acme/src/p1_acme.erl"},
{line,776}]},
This works perfectly when compiled Erlang/OTP 27.3.
This comment points to this source code discussion that seems relevant. An Elixir library apparently bypassed that problem in voltone/x509#90
In any case, a specific bugreport is filled in Erlang/OTP tracker: erlang/otp#10028
Metadata
Metadata
Assignees
Labels
No labels