Mediu inconjurator:
Versiunea ejabberd: 20.7
Versiunea Erlang: 10.6
OS: Windows Server 2019
Instalat de la: programul de instalare binar oficial
Erori de la error.log/crash.log
2021-06-21 07:40:31.041 [critical] <0.105.0>@ejabberd_app:start:71 Nu s-a pornit aplicația ejabberd: Valoare nevalidă a opțiunii listen->4->certfile: Nu s-a putut citi fișierul PEM „C: /ProgramData/ejabberd/conf/test.pem': la linia 41: nu s-a putut decoda din formatul DER
Alergare
[|] = rr(cheie_publică),
{ok, _} = application:ensure_all_started(public_key),
{ok, date} = file:read_file("C:/Utilizatori/admin/Desktop/test.pem"),
[{'PrivateKeyInfo', Der, }|] = cheie_publică:pem_decode(Date),
#'PrivateKeyInfo'{privateKey = Key} = public_key:der_decode('PrivateKeyInfo', Der),
public_key:der_decode('RSAPrivateKey', Cheie).
ofera:
** eroare de excepție: nu se potrivește valoarea din partea dreaptă
#'RSAPrivateKey'{
versiune = „două prime”,
modul = ... ,
publicExponent = 65537,
privateExponent = ... ,
prim1 = ... ,
prim2 = ... ,
exponent1 = ... ,
exponent2 = ... ,
coeficient = ... ,
otherPrimeInfos = asn1_NOVALUE}
Descrierea erorii
Nu pot face ejabberd să ruleze din cauza erorii menționate mai sus. Cu certificatul unui colegiu de-al meu merge bine, dar nu știu de ce ejabberd îl refuză pe al meu.
Folosesc un certificat cu o autoritate de certificare Windows autosemnată, așa cum o face și colegiul meu.
https://github.com/processone/ejabberd/issues/2488 pare o problemă similară, dar nu sunt complet sigur. Cu toate acestea, doar cu cheia privată pot porni serviciul, dar nu cu lanțul complet, deoarece eroarea din linia 41 apare la pornirea certificatului public al serverului. Când folosesc doar cheia privată, desigur, nu mă pot conecta din cauza:
2021-06-21 08:32:46.742 [eroare] <0.564.0>@ejabberd_http:init:122 CRASH REPORT Procesul <0.564.0> cu 0 vecini s-au prăbușit cu motiv: nu se potrivește valoarea din dreapta {error,no_certfile} în ejabberd_http:init/3 linia 122
2021-06-21 08:32:46.742 [eroare] <0.526.0>@ejabberd_http:init:122 Supervizorul ejabberd_http_sup avea copilul undefined a început cu {ejabberd_http,start_link,undefined} la <0.564.0> fără potrivire exit valoarea din dreapta {error,no_certfile} în ejabberd_http:init/3 linia 122 în context child_terminated
Cu toate acestea, cu dezactivarea tls, evident că poate porni.
Mulțumesc pentru ajutor, Lukas
Ps.: Am postat această problemă pe GitHub și am discutat cu un tip, dar nu a putut să mă ajute acolo.