สิ่งแวดล้อม:
เวอร์ชัน ejabberd: 20.7
เวอร์ชัน Erlang: 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 (คีย์สาธารณะ),
{ตกลง, _} = แอปพลิเคชัน: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', ถัดไป),
public_key:der_decode('RSAPrivateKey', คีย์)
ให้:
** ข้อผิดพลาดข้อยกเว้น: ไม่ตรงกับค่าด้านขวา
#'RSAPrivateKey'{
เวอร์ชัน = 'ทูไพรม์',
โมดูลัส = ... ,
เลขชี้กำลังสาธารณะ = 65537,
เลขชี้กำลังส่วนตัว = ... ,
ไพรม์1 = ... ,
ไพรม์2 = ... ,
เลขชี้กำลัง 1 = ... ,
เลขชี้กำลัง 2 = ... ,
ค่าสัมประสิทธิ์ = ... ,
otherPrimeInfos = 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 กระบวนการ CRASH REPORT <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 ให้ child undefined เริ่มต้นด้วย {ejabberd_http,start_link,undefined} ที่ <0.564.0> ออกด้วยเหตุผลที่ไม่ตรงกับ ค่าขวามือ {error,no_certfile} ใน ejabberd_http:init/3 บรรทัดที่ 122 ในบริบท child_terminated
อย่างไรก็ตามด้วยการปิดใช้งาน tls จะสามารถเริ่มต้นได้อย่างชัดเจน
ขอบคุณสำหรับความช่วยเหลือของคุณ ลูคัส
Ps.: ฉันโพสต์ปัญหานี้ใน GitHub เช่นกันและได้คุยกับผู้ชายคนหนึ่ง แต่เขาไม่สามารถช่วยฉันได้ที่นั่น