Môi trường:
phiên bản ejabberd: 20.7
Phiên bản Erlang: 10.6
Hệ điều hành: Windows Server 2019
Được cài đặt từ: trình cài đặt nhị phân chính thức
Lỗi từ error.log/crash.log
21-06-2021 07:40:31.041 [quan trọng] <0.105.0>@ejabberd_app:start:71 Không khởi động được ứng dụng ejabberd: Giá trị tùy chọn không hợp lệ nghe->4->certfile: Không thể đọc tệp PEM 'C: /ProgramData/ejabberd/conf/test.pem': tại dòng 41: không thể giải mã từ định dạng DER
Đang chạy
[|] = rr(khóa_công khai),
{ok, _} = application:ensure_all_started(public_key),
{ok, Data} = file:read_file("C:/Users/admin/Desktop/test.pem"),
[{'PrivateKeyInfo', Der, }|] = public_key:pem_decode(Dữ liệu),
#'PrivateKeyInfo'{privateKey = Key} = public_key:der_decode('PrivateKeyInfo', Der),
public_key:der_decode('RSAPrivateKey', Key).
đưa ra:
** lỗi ngoại lệ: không khớp giá trị bên tay phải
#'RSAPrivateKey'{
phiên bản = 'hai số nguyên tố',
mô đun = ... ,
công khai số mũ = 65537,
privateExponent = ... ,
số nguyên tố1 = ... ,
số nguyên tố2 = ... ,
số mũ1 = ... ,
số mũ2 = ... ,
hệ số = ... ,
otherPrimeInfos = asn1_NOVALUE}
mô tả lỗi
Tôi không thể chạy ejabberd vì lỗi được đề cập ở trên. Với chứng chỉ đại học của tôi, nó hoạt động tốt, nhưng tôi không biết tại sao ejabberd lại từ chối chứng chỉ của tôi.
Tôi sử dụng chứng chỉ có cơ quan cấp chứng chỉ cửa sổ tự ký giống như trường đại học của tôi.
https://github.com/processone/ejabberd/issues/2488 có vẻ giống như một vấn đề tương tự, nhưng tôi không hoàn toàn chắc chắn. Tuy nhiên, chỉ với khóa riêng, tôi có thể khởi động dịch vụ, nhưng không phải với toàn bộ chuỗi, vì lỗi ở dòng 41 xảy ra khi bắt đầu chứng chỉ công khai của máy chủ. Khi chỉ sử dụng khóa riêng, tất nhiên tôi không thể kết nối vì:
21-06-2021 08:32:46.742 [lỗi] <0.564.0>@ejabberd_http:init:122 Quá trình BÁO CÁO LỖI <0.564.0> với 0 hàng xóm bị lỗi với lý do: không khớp giá trị bàn tay phải {error,no_certfile} trong ejabberd_http:init/3 dòng 122
21-06-2021 08:32:46.742 [lỗi] <0.526.0>@ejabberd_http:init:122 Người giám sát ejabberd_http_sup có con không xác định bắt đầu bằng {ejabberd_http,start_link,undefined} tại <0.564.0> thoát mà không có lý do phù hợp giá trị bên tay phải {error,no_certfile} trong ejabberd_http:init/3 dòng 122 trong ngữ cảnh child_terminated
Tuy nhiên, với việc tắt tls, rõ ràng là nó có thể bắt đầu.
Cảm ơn sự giúp đỡ của bạn, Lukas
Ps.: Tôi đã đăng vấn đề này trên GitHub cũng vậy và đã trò chuyện với một anh chàng, nhưng anh ta không thể giúp tôi ở đó.