Среда:
версия ejabberd: 20.7
Эрланг версия: 10.6
ОС: Windows Server 2019
Установлено из: официальный бинарный установщик
Ошибки из error.log/crash.log
2021-06-21 07:40:31.041 [критический] <0.105.0>@ejabberd_app:start:71 Не удалось запустить приложение ejabberd: неверное значение параметра listen->4->certfile: не удалось прочитать файл PEM 'C: /ProgramData/ejabberd/conf/test.pem': в строке 41: не удалось декодировать из формата DER
Бег
[|] = rr(публичный_ключ),
{ok, _} = приложение:ensure_all_started(public_key),
{хорошо, данные} = файл:read_file("C:/Users/admin/Desktop/test.pem"),
[{'PrivateKeyInfo', Der, }|] = public_key:pem_decode(данные),
#'PrivateKeyInfo'{privateKey = Key} = public_key:der_decode('PrivateKeyInfo', Der),
public_key:der_decode('RSAPrivateKey', Ключ).
дает:
** ошибка исключения: нет совпадения правого значения
#'RSAPrivateKey'{
версия = 'два простых',
модуль = ...,
публичный экспонент = 65537,
частныйЭкспонент = ...,
простое1 = ...,
простое2 = ...,
показатель1 = ...,
показатель2 = ...,
коэффициент = ... ,
другиеPrimeInfos = asn1_NOVALUE}
Описание ошибки
Я не могу запустить ejabberd из-за упомянутой выше ошибки. С моим сертификатом колледжа он работает нормально, но я не знаю, почему ejabberd отказывается от моего.
Я использую сертификат с самоподписанным центром сертификации Windows, как и мой колледж.
https://github.com/processone/ejabberd/issues/2488 похоже похожая проблема, но я не совсем уверен. Однако только с закрытым ключом я могу запустить службу, но не с полной цепочкой, так как ошибка в строке 41 возникает при запуске публичного сертификата сервера. При использовании только закрытого ключа я, конечно, не могу подключиться из-за:
2021-06-21 08:32:46.742 [ошибка] <0.564.0>@ejabberd_http:init:122 ОТЧЕТ О АВАРИИ Процесс <0.564.0> с 0 соседними узлами завершился сбоем по причине: несоответствие правого значения {error,no_certfile} в ejabberd_http:init/3 строка 122
2021-06-21 08:32:46.742 [ошибка] <0.526.0>@ejabberd_http:init:122 Супервизор ejabberd_http_sup запустил дочерний элемент undefined с {ejabberd_http,start_link,undefined} в <0.564.0> выход с причиной несоответствия правое значение {error,no_certfile} в ejabberd_http:init/3, строка 122 в контексте child_terminated
Однако с деактивацией tls он, очевидно, может запуститься.
Спасибо за помощь, Лукас
P.S. Я разместил этот вопрос на Гитхаб тоже и поболтал с одним парнем, но он не смог мне помочь.