มี mosquitto 1.x ทำงานได้ดีบน Debian 10 (พร้อม SSL) พร้อมกับการอัปเกรดเป็น Debian 11 มาพร้อม mosquitto 2.0.11-1
ฉันต้องทำการปรับไฟล์ config สองสามอย่างเพื่อให้เริ่มต้นได้เลย อ่านผ่านๆ ไปแล้ว https://mosquitto.org/documentation/migrating-to-2-0/
สำหรับการทดสอบ ฉันกำลังเริ่ม daemon ด้วยคำสั่งนี้แบบโต้ตอบ:
/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf -v
แต่ตอนนี้ไคลเอ็นต์ไม่สามารถเชื่อมต่อได้อีกต่อไป ไม่ว่าจะไคลเอ็นต์ประเภทใด (ฉันมีหลากหลายประเภท) สำหรับความพยายามในการเชื่อมต่อไคลเอนต์ทุกครั้ง ฉันจะได้รับรายการบันทึกดังนี้:
1629544574: การเชื่อมต่อใหม่จาก x.x.x.x:54278 บนพอร์ต 8883
1629544574: ไคลเอ็นต์ <unknown> ถูกตัดการเชื่อมต่อเนื่องจากข้อผิดพลาดของโปรโตคอล
นี่คือไฟล์กำหนดค่าหลัก:
# วางการกำหนดค่าในเครื่องของคุณใน /etc/mosquitto/conf.d/
#
# คำอธิบายแบบเต็มของไฟล์การกำหนดค่าอยู่ที่
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example
pid_file /var/run/mosquitto/mosquitto.pid
ความคงอยู่จริง
ติดตา_location /var/lib/mosquitto/
#ที่ราบ
#ผู้ฟัง 1883
#SSL
ผู้ฟัง 8883
#keepalive_interval 600
#ไม่ต้องยืนยันตัวตน
allow_anonymous จริง
log_type ทั้งหมด
ไฟล์ log_dest /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d
และนี่คือไฟล์ SSL (ไฟล์เดียวใน conf.d):
cafile /etc/mosquitto/certs/ca.cer
ใบรับรองไฟล์ /etc/mosquitto/certs/mqtt.cer
ไฟล์คีย์ /etc/mosquitto/certs/mqtt.key
dhparamfile /etc/mosquitto/certs/dhparam.pem
#tls_version tlsv1.2
ไฟล์ที่เกี่ยวข้องกับใบรับรองมีอยู่ทั้งหมด:
root@linux06:/etc/mosquitto# ls -l certs/
รวม 28
-rw-r--r-- 1 mosquitto mosquitto 3915 28 เม.ย. 02:36 น.
-rw-r----- 1 mosquitto mosquitto 424 21 ส.ค. 12:45 น. dhparam.pem
-rwxr-xr-- 1 mosquitto mosquitto 3546 28 เม.ย. 02:36 น. mqtt.cer
-rwxr-x--- 1 mosquitto mosquitto 3243 28 เม.ย. 02:36 mqtt.key
-rwxr-x--- 1 mosquitto mosquitto 7528 28 เม.ย. 02:36 น. mqtt.p7b
-rw-r--r-- 1 ยุง 130 28 เม.ย. 02:36 README
การยอมรับใบรับรองทั้งหมดในไคลเอนต์ไม่ได้ช่วยอะไร ด้วยวิธีนี้อย่างน้อยฉันก็มีบางอย่างที่จะเริ่มต้น
เมื่อฉันย้ายไฟล์คอนฟิก ssl ออกไป ด้วยเหตุนี้จึงปิดใช้งาน SSL ไคลเอ็นต์สามารถเชื่อมต่อได้ดีเมื่อลองใช้การเชื่อมต่อธรรมดา
สิ่งที่ฉันพบว่าค่อนข้างแปลกคือสิ่งนี้ นี้ไม่ควรใช่หรือไม่?
root@linux06:~#openssl s_client -เชื่อมต่อ 127.0.0.1:8883 -showcerts
เชื่อมต่อแล้ว(00000003)
เขียน:errno=104
---
ไม่มีใบรับรองเพื่อน
---
ไม่มีการส่งชื่อ CA ของใบรับรองไคลเอ็นต์
---
SSL handshake อ่าน 0 ไบต์และเขียน 283 ไบต์
การยืนยัน: ตกลง
---
ใหม่ (ไม่มี) รหัสคือ (ไม่มี)
ไม่สนับสนุนการเจรจาใหม่อย่างปลอดภัย
การบีบอัด: ไม่มี
การขยายตัว: ไม่มี
ไม่มีการเจรจา ALPN
ข้อมูลต้นไม่ได้ถูกส่ง
ตรวจสอบรหัสส่งคืน: 0 (ตกลง)
---
รูท@linux06:~#
ใบรับรองยังใช้งานได้ดี (แม้ว่าจะหมดอายุเร็วๆ นี้ มีการปิดบังเนื้อหาบางส่วน):
root@linux06:~# opensl x509 -text -in /etc/mosquitto/certs/mqtt.cer
ใบรับรอง:
ข้อมูล:
รุ่น: 3 (0x2)
หมายเลขซีเรียล:
18:00:00:02:07:9a:37:38:09:44:97:a3:6c:00:01:00:00:02:07
อัลกอริทึมลายเซ็น: sha512WithRSAEncryption
ผู้ออก: DC = org, DC = มาส์ก, DC = มาส์ก, CN = มาส์ก
ความถูกต้อง
ไม่ใช่ก่อน: 26 ส.ค. 13:20:32 น. 2019 GMT
ไม่หลังจาก : 25 ส.ค. 13:20:32 น. 2564 GMT
หัวเรื่อง: C = DE, ST = NA, L = ไม่มีที่ไหนเลย, OU = สวมหน้ากาก
เรื่องข้อมูลคีย์สาธารณะ:
อัลกอริทึมคีย์สาธารณะ: rsaEncryption
รหัสสาธารณะ RSA: (4096 บิต)
โมดูลัส:
00:c3:55:4a:ec:47:ba:65:ee:1c:b4:ac:72:73:0d:
4b:c3:ae:94:8c:35:d8:1c:99:7e:0e:d9:12:3b:cf:
c9:6f:2a:f1:c0:e6:10:3e:52:df:a7:5a:36:73:6a:
ฉันหมดปัญญาแล้ว ไม่มีใครมีความคิดว่าทำไมสิ่งนี้ถึงล้มเหลว? ฉันได้ขุดผ่านตัวอย่าง config การอนุญาตระบบไฟล์และหน้าเว็บ แต่ฉันไม่สามารถหาสาเหตุของความล้มเหลวนี้ได้